VSCode个人经验

VSCode 个人使用经验

Version 1.01

by Pixel Frame
遠神恵賜

编辑器介绍

资源管理

VS Code自然是可以作为一个单纯的文本编辑器,直接打开文档进行编辑。但其实要使用Debug、Git等功能,则还是要打开一个文件夹,即将该文件夹作为工作目录。这也就和IDE的工程类似的概念。在打开文件夹后,左侧的资源管理器就能很直观的显示目录中的各种文件。在安装插件后,更是能够添加XML分析,Git历史,Commit对比等等的功能。

编码/制表符/换行符

VS Code新建/打开文件默认采用UTF-8(无BOM),并不能自动识别文档的编码,需要修改可以在右下角选择。但有一不方便的地方是即使修改过一次打开的编码,下次打开时依然会默认UTF-8打开,每次只能手动修改。</br>
同理,VS Code默认Tab键为4个(半角)空格,有一些编辑器的默认Tab为2个空格。可以选择使用制表符作为Tab键输入以及更改Tab长度。同时也可以将文档中现有的空格和制表符相互转换,对缩进格式十分严格的在下来说这是十分实用的功能。</br>
作为最初在Windows上的编辑器,VS Code的默认换行符自然是Windows/DOS的CRLF(回车换行)。自然,除非使用系统自带的Notepad打开文件或者是远古时期的编译器,大部分现代的文本编辑器都能正确识别CRLF和LF的文档,其实不用过于纠结使用何种换行符。

设置

VS Code使用JSON进行设置,熟悉JSON语法可以很快上手。当然,其实没有接触过JSON也能很容易地进行设置,因为VS Code已经写好了详细的中文注释,其实需要修改的设置也并没有那么多,大部分保持默认即可。其中,字体方面在下比较推荐Consolas,VS Code支持设置多个字体,当前一字体没有某一字符时会自动Fallback至下一字体,所以可以如下设置Consolas + 思源黑体。当然对「Courier New」「Lucida Console」「Source Code Pro / Source Han Code JP」有特别喜好的也可以设置。

"editor.fontFamily": "Consolas, 思源黑体 Regular"

等宽字体大多没有中文字符集,对于不支持多个字体的编辑器,比较好的选择是Windows注册表的fontlink。或者是「Microsoft Yahei Mono」和「Inziu Iosevka」字体。Consolas的优势在于意大利体,斜体下别有韵味,Microsoft Yahei Mono虽然是将Consolas和微软雅黑拼合,但是并没有Consolas的意大利体;而Inziu Iosevka则是仅有的中英文混排可以严格对齐的字体。</br>
安装插件后,附加的设置选项会添加在默认设置的下面(当然可能就没有注释了)。按照插件页面的说明也能方便地进行设置。比如LaTeX Workshop建立XeLaTeX的输出设置如下。

"latex-workshop.latex.toolchain": [
       {
           "command": "xelatex",
           "args": [
               "-synctex=1",
               "-interaction=nonstopmode",
               "-file-line-error",
               "%DOC%"
           ]
       }
   ]

另外,设置一个顺眼的颜色主题和图标主题是十分重要的。在扩展中可以搜索颜色主题和图标主题,比如著名的Monokai样式。Monokai相比默认的Visual Studio样式,对各种关键词的高亮要丰富得多,同时深色主题看着要比亮色主题舒服很多。GitHub样式也是一个不错的主题。而图标主题Material样式风格统一,覆盖的文件类型也比较全面。值得一提的是Visual Basic Script(.vbs)格式几乎没有被任何一个图标主题包含,毕竟PowerShell已经能完全取代任何的Windows Shell了吧。

快捷键

众所周知,快捷键是一个文本编辑器是否高端的标识。VS Code可以通过扩展支持Vim, Sublime等编辑器的快捷键。</br>
话虽如此,像在下这么懒的人是不会去记Vim的快捷键的。VS Code默认基本使用的快捷键和大多数微软软件相同,即

  • Ctrl + C | Ctrl + C | Ctrl + V ····· 复制 | 剪切 | 粘贴
  • Ctrl + Z | Ctrl + Y ············· 撤销 | 恢复
  • Ctrl + F | Ctrl + H ············· 搜索 | 替换
  • Ctrl + W ···················· 关闭标签页

等。而生成调试的快捷键则与Visual Studio一直,即

  • F5 ········· 调试启动
  • Ctrl + F5 ···· 非调试启动
  • F9 ········· 设置断点
  • F10 ········ 单步跳过
  • F11 ········ 单步执行

等。VS Code专属的快捷键有可打印的清单,多加使用记忆并不困难。所有命令可以通过Ctrl + Shift + P唤出,包括扩展插件的命令。而设置相关则有两步快捷键,先按下Ctrl + K再按下其他Ctrl组合键完成。

Git & GitHub

首先需要安装Git程序。然后就可以在扩展中安装各种各样的Git插件了。如Git History, Git Blame, Git Lens等等。</br>
要Push至GitHub,自然要先与远程Repository建立关联,建议还是使用Git GUI完成比较方便,自然技术过硬可以直接使用VS Code的控制台完成。之后就能在源代码管理界面完成Commit, Pull, Push, Merge等等操作了。装有插件自然还能可视化Git历史,进一步方便管理。

Debug

在打开文件夹状态下,就可以添加Debug配置。配置合理起见,为每个工程添加独立Debug配置是比较好的。但也可以在一个文件夹下放置所有的Debug配置。</br>
点击添加配置就能建立新的launch.json,有技术的话自然可以自己来写debug配置,到网上找一下别人写好的配置也是没有问题的。下面会在C/C++插件中详细介绍如何配置GDB。

扩展

C/C++

以MinGW的GCC编译器为例。安装后需要手动在系统环境变量PATH中添加MinGW的bin路径,由于PowerShell对环境变量更新问题,最好重启一次。然后就能在VS Code中添加g++生成任务和Debug配置了。</br>
首先在菜单中配置新任务,任务其实就是运行一个程序或在Shell执行指令,同样是JSON格式。示例g++生成任务如下,g++/gcc的参数自行参考gcc文档。当然也可以使用Clang,相比之下gcc的编译错误信息实在是麻烦。Windows平台完整的Visual Studio 2017自然是无敌的~

"version": "2.0.0",
"tasks": [
  {
      "taskName": "g++",
      "command": "g++",       //执行的编译器文件g++.exe
      "args": [           //g++的编译参数
           "-g", 
           "${file}", 
           "-o",
           "${fileDirname}/${fileBasenameNoExtension}.exe",
           "-Og",
           "-static-libgcc", 
           "-static-libstdc++", 
           "-Wall"
       ],
       "type": "shell",       //在Shell中执行,默认作为进程执行
       "group": {     //执行组为生成组,且为默认
           "kind": "build",
           "isDefault": true
       },
       "presentation": {  //在输出面板显示
           "echo": true,
           "reveal": "always",
            "focus": false,
            "panel": "shared"
       },
       "problemMatcher": {    //错误信息显示
           "owner": "cpp",
           "fileLocation": ["relative", "${worksapceRoot}"],
           "pattern": {
               "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", //正则匹配
               "file": 1,
               "line": 2,
               "column": 3,
               "severity": 4,
               "message": 5
           }
       }
   }
]

生成exe后,就能执行gdb来进行debug了。配置如下:

{
   "name": "C++ Launch (GDB)",
   "type": "cppdbg",
   "request": "launch",
   "targetArchitecture": "x86",
   "program": "${fileDirname}/${fileBasenameNoExtension}.exe",    //被debug程序
   "miDebuggerPath": "C:/MinGW/bin/gdb.exe",  //gdb路径
   "args": [                      //给gdb的参数
   ],
   "stopAtEntry": false,
   "cwd": "${workspaceRoot}",     //被debug程序的工作路径
   "externalConsole": true,       //调用外部控制台
   "preLaunchTask": "g++"         //先执行g++任务生成exe
},

LaTeX Workshop

首先需要安装TeX发行版,推荐TeX Live,CTeX目前已经很久没有更新了。对于TeX的各种配置,如pdfLaTeX, BibLaTeX, XeLaTeX以及CJK中文字体等的问题属于TeX知识,在这里就不说了。对于基本使用,只要选择一个满足自己需求的包即可,使用XeLaTeX可以参考上文中的设置。在TeX发行版中安装了chktex还可以打开语法检查功能。

Markdown Preview Enhanced

相较于其他Markdown预览插件,Markdown Preview Enhanced(MPE)拥有对MathJax/KeTeX的支持,能够在预览中显示LaTeX公式(虽然没有真正的LaTeX那么美观)。可以自定义CSS样式,使输出的Markdown文件更加个性化。并且自带了输出为HTML, pdf等多种格式的功能。当然输出pdf等格式需要安装PhantomJS或PrinceXML等软件,装有Acrobat或者其他pdf创建软件也可以从HTML创建pdf文档。</br>
不太建议安装markdownlint插件检查语法,因为各个Markdown插件间的语法解释都略有不同。比如对于换行,大多数Markdown插件都需要手动在段尾添加</br>才能换行,但MPE就能自动换行。
$\mathrm{\LaTeX}$示例:
$$
\oint_c \vec{H} \cdot \mathrm{d} \vec{l} = \int_s \left( \vec{J_c} + \vec{J_v} +\frac{\partial\vec{D}} {\partial t} \right) \cdot \mathrm{d} \vec{s}
$$

$$
\displaystyle\oint_c \vec{E} \cdot \mathrm{d} \vec{l} =
-\int_s \frac{\partial\vec{B}}{\partial t} \cdot \vec{s}
$$

$$
\oint_s \vec{D} \cdot \mathrm{d} \vec{s} =
\int_V \rho \mathrm{d} V
$$

$$
\oint_s \vec{B} \cdot \mathrm{d} \vec{s} = 0
$$

$$
\nabla \times \vec{H} = \vec{J} + \frac{\partial\vec{D}}{\partial t}
$$

$$
\nabla \times \vec{E} = -\frac{\partial\vec{B}}{\partial t}
$$

$$
\nabla \cdot \vec{D} = \rho
$$

$$
\nabla \cdot \vec{B} = 0
$$

Auto-Open Markdown Preview

相比MPE更为轻便,自带的样式也比较美观,不需要自己来写CSS。自动弹出挺方便,但有的时候不想预览的时候也挺烦的。在语法上和MPE有部分区别,建议采用最为稳妥的语法规则,避免问题。

#待续 To be Continued

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容