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的工程類似的概念。在打開(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(回車換行)。自然笑窜,除非使用系統(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ì)的中文注釋智政,其實(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)一关筒,覆蓋的文件類型也比較全面。值得一提的是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ì)去記Vim的快捷鍵的。VS Code默認(rèn)基本使用的快捷鍵和大多數(shù)微軟軟件相同蜡塌,即
- Ctrl + C | Ctrl + C | Ctrl + V ····· 復(fù)制 | 剪切 | 粘貼
- Ctrl + Z | Ctrl + Y ············· 撤銷 | 恢復(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專屬的快捷鍵有可打印的清單,多加使用記憶并不困難奴愉。所有命令可以通過(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ù)的話自然可以自己來(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è)滿足自己需求的包即可末盔,使用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 \mathrmvhp1rlr \vec{l} = \int_s \left( \vec{J_c} + \vec{J_v} +\frac{\partial\vec{D}} {\partial t} \right) \cdot \mathrmqg1mbkc \vec{s}
$$
$$
\displaystyle\oint_c \vec{E} \cdot \mathrm7bhvluf \vec{l} =
-\int_s \frac{\partial\vec{B}}{\partial t} \cdot \vec{s}
$$
$$
\oint_s \vec{D} \cdot \mathrmhzfnm7p \vec{s} =
\int_V \rho \mathrmvlfzhs1 V
$$
$$
\oint_s \vec{B} \cdot \mathrmbrxfziu \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)題典予。