vscode的幾項(xiàng)基本配置詳解
vscode簡(jiǎn)介
什么是vscode
簡(jiǎn)單來(lái)說(shuō),vscode是一款文本編輯器,而不是ide。這就是說(shuō),vscode只提供編輯的環(huán)境而不提供編譯的環(huán)境,如果想要用vscode來(lái)集成開(kāi)發(fā)環(huán)境,則必須經(jīng)過(guò)以下幾步:
- 安裝必須的編譯器(比如mingw,python,texlive等)
- 配置相應(yīng)編譯環(huán)境(添加環(huán)境變量等)
- 安裝匹配的vscode的拓展插件
- 通過(guò)拓展插件提供的“屬性”將外部編譯器鏈接到vscode
同時(shí),一個(gè)文本編輯器肯定不會(huì)提供運(yùn)行程序的功能,vscode也是如此。要運(yùn)行程序,有如下幾種方法:
- vscode的一些拓展插件中會(huì)提供配置好的終端和運(yùn)行程序的命令,我們可以直接使用;
- vscode中有專門運(yùn)行程序的拓展插件code-runner,可以安裝后使用;
- vscode提供了對(duì)數(shù)種終端的接口,我們可以在vscode中像使用cmd小黑框那樣使用終端,由此我們可以在vscode終端中運(yùn)行程序;
這樣,我們大致了解了使用vscode編譯、運(yùn)行程序的方法。
vscode的配置
首先,我們要明確vscode的配置的最小單元是文件夾,即可以使用打開(kāi)文件夾功能我們可以把不同的文件夾鏈接到不同的外部編譯器、實(shí)現(xiàn)不同的快捷任務(wù)、快速進(jìn)行debug和詳細(xì)設(shè)定拓展插件的功能等等。
因此,我們先速覽vscode的配置結(jié)構(gòu),如下圖:
可以看到,
- vscode下有全局設(shè)置settings.json;之后是工作區(qū),和工作區(qū)設(shè)置settings.json,一個(gè)工作區(qū)包含了多個(gè)文件夾;
- 每個(gè)文件夾中有相同的.vscode文件夾,這個(gè)文件夾中的三個(gè)文件settings.json,tasks.json,launch.json,它們就是配置的核心。
- 每個(gè)文件夾通過(guò)配置可以編譯運(yùn)行不同語(yǔ)言的文件:c++,python和html,同時(shí)可以通過(guò)同一個(gè)工作區(qū)直接訪問(wèn),這就是vscode的集成性和方便性。
現(xiàn)在,我們一項(xiàng)一項(xiàng)來(lái)說(shuō):
文件結(jié)構(gòu)
vscode提供三級(jí)文件結(jié)構(gòu),從工作區(qū)到文件夾到單個(gè)文件:
- 工作區(qū)是vscode提供的文件夾的“集合”,一個(gè)工作區(qū)可以包含多個(gè)文件夾,正如一個(gè)文件夾可以包含多個(gè)文件。
- 文件夾是vscode配置的最小工作單元,vscode無(wú)法為單個(gè)文件提供配置。
- 在不同的工作區(qū)中我們可以選擇啟用/禁用不同的拓展插件以節(jié)省內(nèi)存
settings.json
在這個(gè)json文件中,我們可以通過(guò)鍵值對(duì)的方式設(shè)置vscode內(nèi)置的或拓展插件的各項(xiàng)屬性,其中就包括外部編譯器地址、各項(xiàng)編譯偏好等等。
同時(shí),vscode提供層層嵌套的settings,
- 從高到低分別是全局設(shè)置、工作區(qū)設(shè)置、文件夾設(shè)置; 全局設(shè)置默認(rèn)通過(guò)ctrl+shift+P后輸入settings.json打開(kāi)。
- 我們?cè)谖募A設(shè)置中設(shè)置的屬性會(huì)覆蓋工作區(qū)設(shè)置、也會(huì)覆蓋全局設(shè)置,反之不成立。
- 因此,對(duì)于全局的設(shè)置,比如編輯器字體等,我們將其在user settings.json中進(jìn)行設(shè)置,工作區(qū)暫不敘述,而對(duì)于每個(gè)文件夾都不同的設(shè)置,比如想在不同的文件夾中使用不同的python環(huán)境,我們選擇在folder settings中(即文件夾內(nèi)部的settings.json中)設(shè)置相應(yīng)內(nèi)容。
tasks.json
- 很多時(shí)候,像在使用linux系統(tǒng)的時(shí)候,我們會(huì)自定義一些小腳本來(lái)方便的實(shí)現(xiàn)一些功能,vscode就使用tasks來(lái)支持快捷實(shí)現(xiàn)一些方便的功能。
- 有些拓展插件會(huì)有封裝好的task可以直接執(zhí)行,我們也可以自定義各種各樣的task,例如實(shí)現(xiàn)“編譯當(dāng)前文件”,“刪除多余文件”等等操作。
- tasks比直接定義.bat文件更方便之處在于vscode提供了諸多快捷訪問(wèn)特定路徑的方式,如當(dāng)前文件夾的路徑,vscode打開(kāi)的文件夾的路徑,當(dāng)前文件的路徑,當(dāng)前文件不帶拓展名的名稱等等。
- tasks.json中定義的任務(wù)僅能在當(dāng)前文件夾(包含該文件夾的工作區(qū))中使用。
launch.json
這其中的內(nèi)容主要是用來(lái)對(duì)調(diào)試提供支持。**針對(duì)不同語(yǔ)言的拓展插件會(huì)提供不同的模板。**按f5可以選擇模板并生成文件。
vscode的優(yōu)勢(shì)
- 好看
- 集成性很強(qiáng)
- 配置好了后很方便,隨時(shí)可以自己加功能
- 拓展極其豐富
配置實(shí)例
了解了vscode的配置原理,我在下面給出一些我自己配置的內(nèi)容以供參考。
settings.json全局配置
{ //vscode的默認(rèn)終端,此處設(shè)置為cmd "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe", //拖拽移動(dòng)文件時(shí)不要確認(rèn)提示 "explorer.confirmDragAndDrop": false, //手動(dòng)升級(jí)vscode "update.mode": "manual", //自動(dòng)保存,此處設(shè)置為永遠(yuǎn)自動(dòng)保存 "files.autoSave": "afterDelay", //task的下拉列表中顯示歷史常用的個(gè)數(shù) "task.quickOpen.history": 0, }
對(duì)python
{ //控制是否激活pylint //"python.linting.pylintEnabled": true, "python.linting.enabled": true, //如果使用pylint可能會(huì)導(dǎo)致奇怪的報(bào)錯(cuò),加上這幾句可以取消 //"python.linting.pylintArgs": [ // "--generate-members" //], //是否在自動(dòng)補(bǔ)全的函數(shù)后自動(dòng)添加括號(hào) "python.autoComplete.addBrackets": false, //是否使用python插件內(nèi)部的自動(dòng)補(bǔ)全功能 "python.jediEnabled": true, //python環(huán)境的路徑 "python.pythonPath": "C:\\apps\\Anaconda\\python.exe", //python自動(dòng)補(bǔ)全的搜索路徑 "python.autoComplete.extraPaths": [ "C:/apps/Anaconda/Lib/site-packages/", "C:/apps/Anaconda/Scripts/" ], }
對(duì)c,c++
{ "files.associations": { "*.tcc": "cpp", "array": "cpp", "atomic": "cpp", "cctype": "cpp", "clocale": "cpp", "cmath": "cpp", "cstdarg": "cpp", "cstddef": "cpp", "cstdint": "cpp", "cstdio": "cpp", "cstdlib": "cpp", "cwchar": "cpp", "cwctype": "cpp", "deque": "cpp", "unordered_map": "cpp", "vector": "cpp", "exception": "cpp", "algorithm": "cpp", "functional": "cpp", "iterator": "cpp", "memory": "cpp", "memory_resource": "cpp", "numeric": "cpp", "optional": "cpp", "random": "cpp", "string": "cpp", "string_view": "cpp", "system_error": "cpp", "tuple": "cpp", "type_traits": "cpp", "utility": "cpp", "fstream": "cpp", "initializer_list": "cpp", "iosfwd": "cpp", "iostream": "cpp", "istream": "cpp", "limits": "cpp", "new": "cpp", "ostream": "cpp", "sstream": "cpp", "stdexcept": "cpp", "streambuf": "cpp", "typeinfo": "cpp" } }
對(duì)latex
{ //編譯方式 "latex-workshop.latex.tools": [ { "name": "latexmk", "command": "latexmk", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "-pdf", "%DOC%" ] }, { "name": "xelatex", "command": "xelatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] }, { "name": "pdflatex", "command": "pdflatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] }, { "name": "bibtex", "command": "bibtex", "args": [ "%DOCFILE%" ] } ], "latex-workshop.latex.recipes": [ { "name": "xelatex", "tools": [ "xelatex" ] }, { "name": "latexmk", "tools": [ "latexmk" ] }, { "name": "pdflatex -> bibtex -> pdflatex*2", "tools": [ "pdflatex", "bibtex", "pdflatex", "pdflatex" ] } ], //需要清除文件的后綴 "latex-workshop.latex.clean.fileTypes": [ "*.aux", "*.bbl", "*.blg", "*.idx", "*.ind", "*.lof", "*.lot", "*.out", "*.toc", "*.acn", "*.acr", "*.alg", "*.glg", "*.glo", "*.gls", "*.ist", "*.fls", "*.log", "*.fdb_latexmk", "*.gz" ], //不要顯示錯(cuò)誤彈窗 "latex-workshop.message.error.show": false, //不要顯示信息彈窗 "latex-workshop.message.information.show": false, //不要顯示警報(bào)彈窗 "latex-workshop.message.warning.show": false, //保存時(shí)不要自動(dòng)編譯 "latex-workshop.latex.autoBuild.run": "never", //默認(rèn)在右邊tab預(yù)覽 "latex-workshop.view.pdf.viewer": "tab", }
tasks.json對(duì)C/C++
{ "version": "2.0.0", "command": "g++", "args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"], // 編譯命令參數(shù) "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "\\"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } }
用asymptote畫(huà)圖后進(jìn)行編譯.asy文件,刪除多余文件,將結(jié)果移動(dòng)至特定文件夾
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ //編譯 { //在task列表中顯示的文字 "label": "Generate EPS", //運(yùn)行環(huán)境 "type": "shell", //命令 "command": "asy", //參數(shù) "args": [ "-f", "eps", //$開(kāi)頭的都是vscode提供的封裝好的變量,具體內(nèi)容 //可以自己嘗試 "${file}" ], //所述屬組 "group": "build", //報(bào)錯(cuò)處理 "problemMatcher": [] }, //刪除文件 { "label": "Delete FILE", "type": "shell", "command": "del", "args": [ "*.aux", "*.log", "*.dvi", "*.pdf" ], //設(shè)置為none的task不會(huì)在build task的下拉列表中展示 "group": "none", "problemMatcher": [] }, //將生成的eps移動(dòng)至相應(yīng)文件夾 { "label": "Move EPS", "type": "shell", "command": "move", "args": [ "/Y", //$開(kāi)頭的都是vscode提供的封裝好的變量,具體內(nèi)容 //可以自己嘗試 "${workspaceFolder}\\${fileBasenameNoExtension}.eps", "C:\\Pt_Latex\\Reources\\" ], "group": "build", //在運(yùn)行這個(gè)任務(wù)之前,需要提前運(yùn)行的任務(wù) "dependsOn": [ "Delete FILE" ], "problemMatcher": [] } ] }
launch.json
對(duì)C/C++
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 配置名稱,將會(huì)在啟動(dòng)配置的下拉菜單中顯示 "type": "cppdbg", // 配置類型,這里只能為cppdbg "request": "launch", // 請(qǐng)求配置類型,可以為launch(啟動(dòng))或attach(附加) "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",// 將要進(jìn)行調(diào)試的程序的路徑 "args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),一般設(shè)為空即可 "stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔帲话阍O(shè)置為false "cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄,一般為${workspaceFolder}即代碼所在目錄 "environment": [], "externalConsole": true, // 調(diào)試時(shí)是否顯示控制臺(tái)窗口,一般設(shè)置為true顯示控制臺(tái) "MIMode": "gdb", "miDebuggerPath": "C:\\apps\\MinGW\\bin\\gdb.exe", // miDebugger的路徑,注意這里要與MinGw的路徑對(duì)應(yīng) "preLaunchTask": "g++", // 調(diào)試會(huì)話開(kāi)始前執(zhí)行的任務(wù),一般為編譯程序,c++為g++, c為gcc "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
對(duì)python(默認(rèn)的就成)
{ // 使用 IntelliSense 了解相關(guān)屬性。 // 懸停以查看現(xiàn)有屬性的描述。 // 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: 當(dāng)前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", //是否在程序開(kāi)始處停止 "stopOnEntry": false } ] }
到此這篇關(guān)于vscode的幾項(xiàng)基本配置的文章就介紹到這了,更多相關(guān)vscode基本配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何利用Fiddler模擬惡劣網(wǎng)絡(luò)環(huán)境
這篇文章主要介紹了如何利用Fiddler模擬惡劣網(wǎng)絡(luò)環(huán)境問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05關(guān)于Centos7中Vscode無(wú)響應(yīng)的問(wèn)題及解決方法
在CentOS7中使用命令行直接安裝Vscode時(shí),打開(kāi)Vscode出現(xiàn)界面卡死、無(wú)響應(yīng)情況,如何處理這個(gè)問(wèn)題呢,今天小編給大家?guī)?lái)了Centos7中Vscode無(wú)響應(yīng)的問(wèn)題及解決方法,感興趣的朋友一起看看吧2021-07-07聊聊Flare應(yīng)用前后端性能優(yōu)化問(wèn)題
這篇文章主要介紹了Flare應(yīng)用前后端性能優(yōu)化,制作?flare?的過(guò)程,其實(shí)也是?flame?性能調(diào)優(yōu)的過(guò)程。不過(guò)在解決問(wèn)題之前,我們首先得能定位問(wèn)題有哪些,帶著這些問(wèn)題一起通過(guò)本文學(xué)習(xí)吧2022-02-02測(cè)試框架JUnit VS TestNG對(duì)比分析
這篇文章主要為大家介紹了測(cè)試框架JUnit VS TestNG對(duì)比分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07superset在linux和windows下的安裝和部署詳細(xì)教程
Superset 是 Airbnb開(kāi)源的數(shù)據(jù)探查與可視化平臺(tái),是個(gè)輕量級(jí)的BI工具,開(kāi)發(fā)者可以在其開(kāi)源代碼上根據(jù)需要進(jìn)行二次開(kāi)發(fā)。這篇文章主要介紹了superset在linux和windows下的安裝和部署詳細(xì)教程,需要的朋友可以參考下2020-10-10