教你如何创建一款属于自己的VSCode主题

你有没有想过创建一款属于自己的VSCode主题?没有你想像的那么难,但是真正实现起来也不是那么轻松,需要你对将要去改变的主题的一些属性要有所了解和准备。

如果你要想让你的主题适用于多种编程语言,并且看起来还很漂亮的话,需要对很多的颜色进行重新定义。

下面就简单的介绍实现一款主题的过程,一些原理进行讲解。

生成主题文件

我们将使用VSCode拓展生成器生成我们的主题文件,该工具是由微软官方为插件和主题而打造。

你可以通过以下命令:

npm install -g yo generator-code

然后生成主题文件

yo code

下面进入互动式安装过程,一步一步引导你完成一个主题模板的创建。

最后生成了一个以主题命名的目录,接着用VSCode打开该目录,进行主题的编辑。

cd my-theme
code .

新生成的主题项目已经为你初始化好了所有的东西。在主题目录里面你可以找到一个以主题命名的JSON文件,这个JSON文件包含一些默认颜色的定义,可以直接去修改它。

开发主题

在主题的开发调试阶段,我们最好是进入debug模式(按F5),会打开一个新的VSCode窗口,这个窗口就已经是使用你创建的主题了。

当你编辑主题文件themes/my-theme.json,你将会看到调试的窗口会立刻响应,期间可能会遇到不立马生效的情况,很好解决,在菜单栏点击Run > Restart Debugging

调试的过程是很繁琐的,还需要有一定的审美才行,有一定的颜色搭配能力。

为主题修改UI样式

以下是我为这款主题定义的一些颜色示例

编辑区域

编辑区域就是你日常编辑代码的地方

    "editor.background": "#1B1929","editor.lineHighlightBackground": "#8076C222","editorCursor.foreground": "#988de4",

对于编辑区我定义了backgroundlineHighlightBackgroundeditorCursor.foreground的值,分别代表了编辑区背景颜色,鼠标所在行高亮颜色和光标颜色。

活动栏

VSCode窗口左侧即为活动栏,用来切换不同功能视图的。

    "activityBar.background": "#13111d","activityBar.inactiveForeground": "#323b50","activityBar.foreground": "#5c6e92","activityBarBadge.background": "#8076C2",

活动栏我们为它定义了backgroundinactiveForeground、和activityBarBadge.background的值。foreground的值表示的是图标的颜色,而activityBarBadge则是图标所在角标的颜色。

侧边栏

侧边栏即为打开的项目文件列表区域,或者调试工具等等,这个取决于你当前选择的功能。

    "sideBar.background": "#1B1929","sideBarTitle.foreground": "#bbbbbb","sideBarSectionHeader.background": "#242c3f",

这些定义侧边栏一些基础的颜色。另外的内容部分需要单独定义,包含:

    "list.activeSelectionBackground": "#2a273f","list.activeSelectionForeground": "#8076C2","list.inactiveSelectionBackground": "#2a273f","list.inactiveSelectionForeground": "#8076C2","list.highlightForeground": "#8076C2","list.hoverBackground": "#1f2636",

以上这些定义了当前打开的文件列表所在不同状态下的颜色值,这里的 active 不取决于VSCode窗口是否处于活动状态。相同的list颜色也适用于其他地方的列表。

按钮

VSCode上面按钮不多,我们也给它定义一下颜色,保证主题视觉上的一致性。

    "button.background": "#8076C2","button.hoverBackground": "#8076C299",

以上定义了按钮的两种状态下的颜色,正常状态和鼠标悬浮状态

状态栏

状态栏处于VSCode窗口的底部,由于你所安装的拓展和配置不同,显示的内容也有所不同,包括git所在分支,文件的编码等等。


    "statusBar.border": "#1B1929","statusBar.background": "#13111d","statusBar.debuggingBackground": "#bb0000",

状态栏我选择了和活动栏一致的颜色,我希望状态栏有一个比较特别的颜色,当我们调试的时候不会错过它上面的信息。

标题栏

同样,标题栏的颜色和状态栏、活动栏保持一致。

    "titleBar.activeBackground": "#13111d","titleBar.inactiveBackground": "#13111d","titleBar.inactiveForeground": "#5c6e92",

语法高亮

受到我最喜欢的一款主题Night Owl的影响,我开始不怎么关注语法高亮部分的颜色。高亮在主题JSON文件中tokenColor部分有所定义,tokenColor是一个数组,分别定义了一定范围内的代码scopefontStyleforeground部分样式

{"name": "Comment","scope": ["comment", "punctuation.definition.comment"],"settings": {"fontStyle": "italic","foreground": "#637777"}
}

范围指定可以由VSCode内部工具Inspect Editor Tokens and Scopes来发现,你可以通过组合键Cmd+Shift+P打开它或者搜索"inspect editor"

调色板

为了达到对JavaScript和TypeScript代码一定程度的满意效果,我参考了其它的一些主题。

毕竟这部分的工作是很要耐心的,你可以通过debug模式来查看当前代码区域不同地方的颜色值然后来编辑替换它。

最后我为调色板选了11种颜色以及React项目中JavaScript和TypeScript代码的高亮。

下面是更改了部分颜色的效果

如果你想创建一个自己满意的主题,可以参考以上的步骤,但是最终的效果依照你自己的爱好而定,另外下面的资源也可以供参考:

Sarah Drasner article Creating a VS Code Theme[1]

VS Code documentation on Theme Colors[2]

References

[1] Sarah Drasner article Creating a VS Code Theme: https://css-tricks.com/creating-a-vs-code-theme/
[2] VS Code documentation on Theme Colors: https://code.visualstudio.com/api/references/theme-color

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调试

http://www.cnblogs.com/CARPE-DIEM-wu/p/7798119.html 黄金规则 从帮助台得到的观点是不明确的 检查插头 不要想,而要看 回到目录制造失败 回到目录不要想,而要看 回到目录分而治之 回到目录一次只改一个地方 回到目录保持审计跟踪 回到目录检查插头 回到目录获得全新观点 回到…

【视频内含福利】原来手机套壳视频是这么做出来的

最近视频圈子里都在发这种视频,究竟是怎么做出来的?研究下来发现原来是用的这款名字叫Record Maker的APP,旨在帮助用户轻松快速给视频加上手机壳的效果。目前App Store上的版本是1.2.1,最近一次更新支持了iPhone11/iPhone12模型&a…

apache thrift_使用Java快速入门的Apache Thrift

apache thriftApache Thrift是由facebook创建的RPC框架,现在它是一个Apache项目。 Thrift允许您在不依赖语言的定义文件中定义数据类型和服务接口。 该定义文件用作编译器的输入,以生成用于构建通过不同编程语言进行通信的RPC客户端和服务器的代码。 您也…

前端八大灵感设计,代码变为现实

我们都知道掌握编程技术是一项很难的事情,没有捷径可走。需要我们在日复一日的工作中去锻炼。如果想要达到擅长甚至需要长年累月的积累。下面列举了一些可以给你带来编码灵感的例子,相信你看到会有想去写代码的冲动。因为一个好的工程师,是不…

Apple 公司开发者账号添加团队成员

Apple 公司开发者账号添加团队成员 简介 首先公司内部团队开发需要的账号类型为公司账号,可以添加团队成员协同开发。 账号下的团队成员有三种角色: Team Agent (代理) 代理: 就是注册开发者账号的那一个,权限最高,续费和创建开发…

八个使前端工程师惊艳的效果设计,码否?

我们都知道掌握编程技术是一项很难的事情,没有捷径可走。需要我们在日复一日的工作中去锻炼。如果想要达到擅长甚至需要长年累月的积累。 下面列举了一些可以给你带来编码灵感的例子,相信你看到会有想去写代码的冲动。 因为一个好的工程师,…

OpenStack_I版 1.准备过程

openstack是一个开源云平台,python开发此次部署为实验环境, 采用扁平化简单的网络架构部署  优点:低耦合的,模块化Nova 计算资源池Glance 镜像服务Swift 对象存储Horizon 对计算资源,网络资源起别…

快点,再快点!

现在看视频不来个两倍速(或者更快)都觉得在浪费生命。特别是在看视频教程的时候,文字我们可以做到一目十行,但是视频呢,如果有字幕,我们甚至不用听清,用3倍速或者4倍速完全没有问题,…

jetty eclipse_3个步骤实现Jetty和Eclipse集成

jetty eclipse本教程将引导您逐步了解如何集成Jetty和Eclipse,以及如何在Eclipse中的Jetty服务器上运行Web应用程序。 脚步: 安装Jetty Eclipse插件 建立网路应用程式 运行网络应用 1 –安装Jetty Eclipse插件 将服务器添加到“服务器”视图时&…

使用React和Tailwind CSS搭建项目模板

公众号关注 “太空编程”设为 “星标”,带你了解硬核的编程知识!众所周知,Tailwind CSS框架越来越流行,所以我决定尝试学习并使用Tailwind CSS来搭建一个项目模板,一方面自己深入学习下,二来帮助新人更快地…

PHP实现前台页面与MySQL的数据绑定、同步更新

今天我来给大家介绍一个PHP-MySQL的小项目。 使用 PHP和前台Ajax 实现在前台对MySQL数据库中数据的增、删等操作语句功能。 如果有问题,欢迎拍砖~ 有不懂的地方,提出来咱们一起探讨~ 首先,我们先做好前台HTML、CSS样式,代码如下&a…

如何用Vue实现简易的富文本编辑器,并支持Markdown语法

前端开发经常会用到富文本编辑器,比如CKEditor,动不动一个库几十M的代码量,其中涉及许多你可能用不到的功能特性和相关设置,CKEditor最新版本的代码仓库就有接近2000个JS文件,300,000行代码。 可是如果你只需要一个简…

互联网基建成果,快速实现一个clubhouse要多久

最近国外的一款基于语音的社交软件clubhouse掀起了一股热潮,尤其是在Eleon Musk的带动下,整个互联网圈内人都在第一时间抢先体验。不管它为什么会火,肯定不是技术上有什么特别的优势。随着整个互联网技术生态的不断发展,互联网基础…

阿里帝国到底有多庞大

马云,男,1964年9月10日生于浙江省杭州市,祖籍浙江省嵊州市谷来镇, 阿里巴巴集团主要创始人,现担任阿里巴巴集团董事局主席、日本软银董事、TNC中国理事会主席兼全球董事会成员、华谊兄弟董事、生命科学突破奖基金会董事…

如何搭建一个内部组件共享平台

如今前端越来越趋于组件化的开发方式,最大的益处就是UI页面和逻辑的共用。在开发者的眼里,如果你打开一个网站,组件化的开发方式会让你看起来像这个样子:逻辑功能上我们会封装成一个库,然后NPM发布到公共仓库上&#x…

不要讨厌HATEOAS

或我如何学会不再担心和爱HATEOAS REST已成为实现Web服务的事实上的解决方案,至少已成为一种流行的解决方案。 这是可以理解的,因为REST在使用HTTP规范时提供了一定程度的自我文档。 它经久耐用,可扩展,并提供了其他一些理想的特…

前端如何进行日志驱动开发

日志在开发过程中的作用自不必说,一旦程序出现问题,我们首先想到的是通过日志监控去追查。 好的日志可以通过应用程序执行的历史记录模拟出用户在使用程序的时候操作的完整过程。 想知道发生了什么 为了便于我们分析程序哪里出现问题,我们…

消息钩子学习工程

前奏近来一直在自学Windows Hook相关的知识,已经尝试多种注入方式。尤其对消息钩子方式很感兴趣,因为看到Spy能够截获系统中绝大多数应用的消息流,就很想知道它的工作原理,打算制作属于自己的Spy。消息钩子简介:消息钩…

[Angular] 笔记 8:list/detail 页面以及@Input

1. list 页面 list/detail 是重要的 UI 设计模式。 vscode terminal 运行如下命令生成 detail 组件: PS D:\Angular\my-app> ng generate component pokemon-base/pokemon-detail --modulepokemon-base/pokemon-base.module.ts CREATE src/app/pokemon-base/p…

javaone_JavaOne 2012 – 2400小时! 一些建议

javaone您可能已经看到JavaOne 2012 Content Catalog在线。 计划委员会经过数周的紧张工作,对每个提案进行了分类,审查,评分和讨论,我们终于设法为您设置了(希望如此)有趣的组合。 整整105天或2400小时&…