VSCode個(gè)人經(jīng)驗(yàn)

VSCode 個(gè)人使用經(jīng)驗(yàn)

Version 1.01

by Pixel Frame
遠(yuǎn)神恵賜

編輯器介紹

資源管理

VS Code自然是可以作為一個(gè)單純的文本編輯器,直接打開(kāi)文檔進(jìn)行編輯。但其實(shí)要使用Debug、Git等功能,則還是要打開(kāi)一個(gè)文件夾,即將該文件夾作為工作目錄。這也就和IDE的工程類(lèi)似的概念。在打開(kāi)文件夾后,左側(cè)的資源管理器就能很直觀的顯示目錄中的各種文件。在安裝插件后,更是能夠添加X(jué)ML分析,Git歷史,Commit對(duì)比等等的功能。

編碼/制表符/換行符

VS Code新建/打開(kāi)文件默認(rèn)采用UTF-8(無(wú)BOM),并不能自動(dòng)識(shí)別文檔的編碼,需要修改可以在右下角選擇。但有一不方便的地方是即使修改過(guò)一次打開(kāi)的編碼,下次打開(kāi)時(shí)依然會(huì)默認(rèn)UTF-8打開(kāi),每次只能手動(dòng)修改。</br>
同理,VS Code默認(rèn)Tab鍵為4個(gè)(半角)空格,有一些編輯器的默認(rèn)Tab為2個(gè)空格。可以選擇使用制表符作為T(mén)ab鍵輸入以及更改Tab長(zhǎng)度。同時(shí)也可以將文檔中現(xiàn)有的空格和制表符相互轉(zhuǎn)換,對(duì)縮進(jìn)格式十分嚴(yán)格的在下來(lái)說(shuō)這是十分實(shí)用的功能。</br>
作為最初在Windows上的編輯器,VS Code的默認(rèn)換行符自然是Windows/DOS的CRLF(回車(chē)換行)。自然,除非使用系統(tǒng)自帶的Notepad打開(kāi)文件或者是遠(yuǎn)古時(shí)期的編譯器,大部分現(xiàn)代的文本編輯器都能正確識(shí)別CRLF和LF的文檔,其實(shí)不用過(guò)于糾結(jié)使用何種換行符。

設(shè)置

VS Code使用JSON進(jìn)行設(shè)置,熟悉JSON語(yǔ)法可以很快上手。當(dāng)然,其實(shí)沒(méi)有接觸過(guò)JSON也能很容易地進(jìn)行設(shè)置,因?yàn)閂S Code已經(jīng)寫(xiě)好了詳細(xì)的中文注釋?zhuān)鋵?shí)需要修改的設(shè)置也并沒(méi)有那么多,大部分保持默認(rèn)即可。其中,字體方面在下比較推薦Consolas,VS Code支持設(shè)置多個(gè)字體,當(dāng)前一字體沒(méi)有某一字符時(shí)會(huì)自動(dòng)Fallback至下一字體,所以可以如下設(shè)置Consolas + 思源黑體。當(dāng)然對(duì)「Courier New」「Lucida Console」「Source Code Pro / Source Han Code JP」有特別喜好的也可以設(shè)置。

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

等寬字體大多沒(méi)有中文字符集,對(duì)于不支持多個(gè)字體的編輯器,比較好的選擇是Windows注冊(cè)表的fontlink。或者是「Microsoft Yahei Mono」和「Inziu Iosevka」字體。Consolas的優(yōu)勢(shì)在于意大利體,斜體下別有韻味,Microsoft Yahei Mono雖然是將Consolas和微軟雅黑拼合,但是并沒(méi)有Consolas的意大利體;而Inziu Iosevka則是僅有的中英文混排可以嚴(yán)格對(duì)齊的字體。</br>
安裝插件后,附加的設(shè)置選項(xiàng)會(huì)添加在默認(rèn)設(shè)置的下面(當(dāng)然可能就沒(méi)有注釋了)。按照插件頁(yè)面的說(shuō)明也能方便地進(jìn)行設(shè)置。比如LaTeX Workshop建立XeLaTeX的輸出設(shè)置如下。

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

另外,設(shè)置一個(gè)順眼的顏色主題和圖標(biāo)主題是十分重要的。在擴(kuò)展中可以搜索顏色主題和圖標(biāo)主題,比如著名的Monokai樣式。Monokai相比默認(rèn)的Visual Studio樣式,對(duì)各種關(guān)鍵詞的高亮要豐富得多,同時(shí)深色主題看著要比亮色主題舒服很多。GitHub樣式也是一個(gè)不錯(cuò)的主題。而圖標(biāo)主題Material樣式風(fēng)格統(tǒng)一,覆蓋的文件類(lèi)型也比較全面。值得一提的是Visual Basic Script(.vbs)格式幾乎沒(méi)有被任何一個(gè)圖標(biāo)主題包含,畢竟PowerShell已經(jīng)能完全取代任何的Windows Shell了吧。

快捷鍵

眾所周知,快捷鍵是一個(gè)文本編輯器是否高端的標(biāo)識(shí)。VS Code可以通過(guò)擴(kuò)展支持Vim, Sublime等編輯器的快捷鍵。</br>
話(huà)雖如此,像在下這么懶的人是不會(huì)去記Vim的快捷鍵的。VS Code默認(rèn)基本使用的快捷鍵和大多數(shù)微軟軟件相同,即

  • Ctrl + C | Ctrl + C | Ctrl + V ····· 復(fù)制 | 剪切 | 粘貼
  • Ctrl + Z | Ctrl + Y ············· 撤銷(xiāo) | 恢復(fù)
  • Ctrl + F | Ctrl + H ············· 搜索 | 替換
  • Ctrl + W ···················· 關(guān)閉標(biāo)簽頁(yè)

等。而生成調(diào)試的快捷鍵則與Visual Studio一直,即

  • F5 ········· 調(diào)試啟動(dòng)
  • Ctrl + F5 ···· 非調(diào)試啟動(dòng)
  • F9 ········· 設(shè)置斷點(diǎn)
  • F10 ········ 單步跳過(guò)
  • F11 ········ 單步執(zhí)行

等。VS Code專(zhuān)屬的快捷鍵有可打印的清單,多加使用記憶并不困難。所有命令可以通過(guò)Ctrl + Shift + P喚出,包括擴(kuò)展插件的命令。而設(shè)置相關(guān)則有兩步快捷鍵,先按下Ctrl + K再按下其他Ctrl組合鍵完成。

Git & GitHub

首先需要安裝Git程序。然后就可以在擴(kuò)展中安裝各種各樣的Git插件了。如Git History, Git Blame, Git Lens等等。</br>
要Push至GitHub,自然要先與遠(yuǎn)程Repository建立關(guān)聯(lián),建議還是使用Git GUI完成比較方便,自然技術(shù)過(guò)硬可以直接使用VS Code的控制臺(tái)完成。之后就能在源代碼管理界面完成Commit, Pull, Push, Merge等等操作了。裝有插件自然還能可視化Git歷史,進(jìn)一步方便管理。

Debug

在打開(kāi)文件夾狀態(tài)下,就可以添加Debug配置。配置合理起見(jiàn),為每個(gè)工程添加獨(dú)立Debug配置是比較好的。但也可以在一個(gè)文件夾下放置所有的Debug配置。</br>
點(diǎn)擊添加配置就能建立新的launch.json,有技術(shù)的話(huà)自然可以自己來(lái)寫(xiě)debug配置,到網(wǎng)上找一下別人寫(xiě)好的配置也是沒(méi)有問(wèn)題的。下面會(huì)在C/C++插件中詳細(xì)介紹如何配置GDB。

擴(kuò)展

C/C++

以MinGW的GCC編譯器為例。安裝后需要手動(dòng)在系統(tǒng)環(huán)境變量PATH中添加MinGW的bin路徑,由于PowerShell對(duì)環(huán)境變量更新問(wèn)題,最好重啟一次。然后就能在VS Code中添加g++生成任務(wù)和Debug配置了。</br>
首先在菜單中配置新任務(wù),任務(wù)其實(shí)就是運(yùn)行一個(gè)程序或在Shell執(zhí)行指令,同樣是JSON格式。示例g++生成任務(wù)如下,g++/gcc的參數(shù)自行參考gcc文檔。當(dāng)然也可以使用Clang,相比之下gcc的編譯錯(cuò)誤信息實(shí)在是麻煩。Windows平臺(tái)完整的Visual Studio 2017自然是無(wú)敵的~

"version": "2.0.0",
"tasks": [
  {
      "taskName": "g++",
      "command": "g++",       //執(zhí)行的編譯器文件g++.exe
      "args": [           //g++的編譯參數(shù)
           "-g", 
           "${file}", 
           "-o",
           "${fileDirname}/${fileBasenameNoExtension}.exe",
           "-Og",
           "-static-libgcc", 
           "-static-libstdc++", 
           "-Wall"
       ],
       "type": "shell",       //在Shell中執(zhí)行,默認(rèn)作為進(jìn)程執(zhí)行
       "group": {     //執(zhí)行組為生成組,且為默認(rèn)
           "kind": "build",
           "isDefault": true
       },
       "presentation": {  //在輸出面板顯示
           "echo": true,
           "reveal": "always",
            "focus": false,
            "panel": "shared"
       },
       "problemMatcher": {    //錯(cuò)誤信息顯示
           "owner": "cpp",
           "fileLocation": ["relative", "${worksapceRoot}"],
           "pattern": {
               "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", //正則匹配
               "file": 1,
               "line": 2,
               "column": 3,
               "severity": 4,
               "message": 5
           }
       }
   }
]

生成exe后,就能執(zhí)行g(shù)db來(lái)進(jìn)行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的參數(shù)
   ],
   "stopAtEntry": false,
   "cwd": "${workspaceRoot}",     //被debug程序的工作路徑
   "externalConsole": true,       //調(diào)用外部控制臺(tái)
   "preLaunchTask": "g++"         //先執(zhí)行g(shù)++任務(wù)生成exe
},

LaTeX Workshop

首先需要安裝TeX發(fā)行版,推薦TeX Live,CTeX目前已經(jīng)很久沒(méi)有更新了。對(duì)于TeX的各種配置,如pdfLaTeX, BibLaTeX, XeLaTeX以及CJK中文字體等的問(wèn)題屬于TeX知識(shí),在這里就不說(shuō)了。對(duì)于基本使用,只要選擇一個(gè)滿(mǎn)足自己需求的包即可,使用XeLaTeX可以參考上文中的設(shè)置。在TeX發(fā)行版中安裝了chktex還可以打開(kāi)語(yǔ)法檢查功能。

Markdown Preview Enhanced

相較于其他Markdown預(yù)覽插件,Markdown Preview Enhanced(MPE)擁有對(duì)MathJax/KeTeX的支持,能夠在預(yù)覽中顯示LaTeX公式(雖然沒(méi)有真正的LaTeX那么美觀)。可以自定義CSS樣式,使輸出的Markdown文件更加個(gè)性化。并且自帶了輸出為HTML, pdf等多種格式的功能。當(dāng)然輸出pdf等格式需要安裝PhantomJS或PrinceXML等軟件,裝有Acrobat或者其他pdf創(chuàng)建軟件也可以從HTML創(chuàng)建pdf文檔。</br>
不太建議安裝markdownlint插件檢查語(yǔ)法,因?yàn)楦鱾€(gè)Markdown插件間的語(yǔ)法解釋都略有不同。比如對(duì)于換行,大多數(shù)Markdown插件都需要手動(dòng)在段尾添加</br>才能換行,但MPE就能自動(dòng)換行。
$\mathrm{\LaTeX}$示例:
$$
\oint_c \vec{H} \cdot \mathrmen9tylz \vec{l} = \int_s \left( \vec{J_c} + \vec{J_v} +\frac{\partial\vec{D}} {\partial t} \right) \cdot \mathrmyqesymi \vec{s}
$$

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

$$
\oint_s \vec{D} \cdot \mathrmcvvxlzn \vec{s} =
\int_V \rho \mathrmmzlq4u1 V
$$

$$
\oint_s \vec{B} \cdot \mathrm0f56gcy \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更為輕便,自帶的樣式也比較美觀,不需要自己來(lái)寫(xiě)CSS。自動(dòng)彈出挺方便,但有的時(shí)候不想預(yù)覽的時(shí)候也挺煩的。在語(yǔ)法上和MPE有部分區(qū)別,建議采用最為穩(wěn)妥的語(yǔ)法規(guī)則,避免問(wèn)題。

#待續(xù) To be Continued

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容