歡迎您光臨本站 註冊首頁

vscode的幾項基本配置詳解

←手機掃碼閱讀     火星人 @ 2020-05-07 , reply:0

vscode簡介
什麼是vscode
簡單來說,vscode是一款文本編輯器,而不是ide。這就是說,vscode只提供編輯的環境而不提供編譯的環境,如果想要用vscode來集成開發環境,則必須經過以下幾步:
安裝必須的編譯器(比如mingw,python,texlive等)
配置相應編譯環境(添加環境變量等)
安裝匹配的vscode的拓展插件
通過拓展插件提供的“屬性”將外部編譯器鏈接到vscode
同時,一個文本編輯器肯定不會提供運行程序的功能,vscode也是如此。要運行程序,有如下幾種方法:
vscode的一些拓展插件中會提供配置好的終端和運行程序的命令,我們可以直接使用;
vscode中有專門運行程序的拓展插件code-runner,可以安裝後使用;
vscode提供了對數種終端的接口,我們可以在vscode中像使用cmd小黑框那樣使用終端,由此我們可以在vscode終端中運行程序;
這樣,我們大致瞭解了使用vscode編譯、運行程序的方法。
vscode的配置
首先,我們要明確vscode的配置的最小單元是文件夾,即可以使用打開文件夾功能我們可以把不同的文件夾鏈接到不同的外部編譯器、實現不同的快捷任務、快速進行debug和詳細設定拓展插件的功能等等。
因此,我們先速覽vscode的配置結構,如下圖:
可以看到,
vscode下有全局設置settings.json;之後是工作區,和工作區設置settings.json,一個工作區包含了多個文件夾;
每個文件夾中有相同的.vscode文件夾,這個文件夾中的三個文件settings.json,tasks.json,launch.json,它們就是配置的核心。
每個文件夾通過配置可以編譯運行不同語言的文件:c++,python和html,同時可以通過同一個工作區直接訪問,這就是vscode的集成性和方便性。
現在,我們一項一項來說:
文件結構
vscode提供三級文件結構,從工作區到文件夾到單個文件:
工作區是vscode提供的文件夾的“集合”,一個工作區可以包含多個文件夾,正如一個文件夾可以包含多個文件。
文件夾是vscode配置的最小工作單元,vscode無法為單個文件提供配置。
在不同的工作區中我們可以選擇啟用/禁用不同的拓展插件以節省內存
settings.json
在這個json文件中,我們可以通過鍵值對的方式設置vscode內置的或拓展插件的各項屬性,其中就包括外部編譯器地址、各項編譯偏好等等。
同時,vscode提供層層嵌套的settings,
從高到低分別是全局設置、工作區設置、文件夾設置; 全局設置默認通過ctrl+shift+P後輸入settings.json打開。
我們在文件夾設置中設置的屬性會覆蓋工作區設置、也會覆蓋全局設置,反之不成立。
因此,對於全局的設置,比如編輯器字體等,我們將其在user settings.json中進行設置,工作區暫不敘述,而對於每個文件夾都不同的設置,比如想在不同的文件夾中使用不同的python環境,我們選擇在folder settings中(即文件夾內部的settings.json中)設置相應內容。
tasks.json
很多時候,像在使用linux系統的時候,我們會自定義一些小腳本來方便的實現一些功能,vscode就使用tasks來支持快捷實現一些方便的功能。
有些拓展插件會有封裝好的task可以直接執行,我們也可以自定義各種各樣的task,例如實現“編譯當前文件”,“刪除多餘文件”等等操作。
tasks比直接定義.bat文件更方便之處在於vscode提供了諸多快捷訪問特定路徑的方式,如當前文件夾的路徑,vscode打開的文件夾的路徑,當前文件的路徑,當前文件不帶拓展名的名稱等等。
tasks.json中定義的任務僅能在當前文件夾(包含該文件夾的工作區)中使用。
launch.json
這其中的內容主要是用來對調試提供支持。**針對不同語言的拓展插件會提供不同的模板。**按f5可以選擇模板並生成文件。
vscode的優勢
好看
集成性很強
配置好了後很方便,隨時可以自己加功能
拓展極其豐富
配置實例
瞭解了vscode的配置原理,我在下面給出一些我自己配置的內容以供參考。
settings.json全局配置
{ //vscode的默認終端,此處設置為cmd "terminal.integrated.shell.windows": "C:\WINDOWS\System32\cmd.exe", //拖拽移動文件時不要確認提示 "explorer.confirmDragAndDrop": false, //手動升級vscode "update.mode": "manual", //自動保存,此處設置為永遠自動保存 "files.autoSave": "afterDelay", //task的下拉列表中顯示歷史常用的個數 "task.quickOpen.history": 0, }
對python
{ //控制是否激活pylint //"python.linting.pylintEnabled": true, "python.linting.enabled": true, //如果使用pylint可能會導致奇怪的報錯,加上這幾句可以取消 //"python.linting.pylintArgs": [ // "--generate-members" //], //是否在自動補全的函數後自動添加括號 "python.autoComplete.addBrackets": false, //是否使用python插件內部的自動補全功能 "python.jediEnabled": true, //python環境的路徑 "python.pythonPath": "C:\apps\Anaconda\python.exe", //python自動補全的搜索路徑 "python.autoComplete.extraPaths": [ "C:/apps/Anaconda/Lib/site-packages/", "C:/apps/Anaconda/Scripts/" ], }
對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" } }
對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" ], //不要顯示錯誤彈窗 "latex-workshop.message.error.show": false, //不要顯示信息彈窗 "latex-workshop.message.information.show": false, //不要顯示警報彈窗 "latex-workshop.message.warning.show": false, //保存時不要自動編譯 "latex-workshop.latex.autoBuild.run": "never", //默認在右邊tab預覽 "latex-workshop.view.pdf.viewer": "tab", }
tasks.json對C/C++
{ "version": "2.0.0", "command": "g++", "args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"], // 編譯命令參數 "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "\"], "pattern": { "regexp": "^(.*):(\d+):(\d+):\s+(warning|error):\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } }
用asymptote畫圖後進行編譯.asy文件,刪除多餘文件,將結果移動至特定文件夾
{ // 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", //運行環境 "type": "shell", //命令 "command": "asy", //參數 "args": [ "-f", "eps", //$開頭的都是vscode提供的封裝好的變量,具體內容 //可以自己嘗試 "${file}" ], //所述屬組 "group": "build", //報錯處理 "problemMatcher": [] }, //刪除文件 { "label": "Delete FILE", "type": "shell", "command": "del", "args": [ "*.aux", "*.log", "*.dvi", "*.pdf" ], //設置為none的task不會在build task的下拉列表中展示 "group": "none", "problemMatcher": [] }, //將生成的eps移動至相應文件夾 { "label": "Move EPS", "type": "shell", "command": "move", "args": [ "/Y", //$開頭的都是vscode提供的封裝好的變量,具體內容 //可以自己嘗試 "${workspaceFolder}\${fileBasenameNoExtension}.eps", "C:\Pt_Latex\Reources\" ], "group": "build", //在運行這個任務之前,需要提前運行的任務 "dependsOn": [ "Delete FILE" ], "problemMatcher": [] } ] }
launch.json
對C/C++
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 配置名稱,將會在啟動配置的下拉菜單中顯示 "type": "cppdbg", // 配置類型,這裡只能為cppdbg "request": "launch", // 請求配置類型,可以為launch(啟動)或attach(附加) "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",// 將要進行調試的程序的路徑 "args": [], // 程序調試時傳遞給程序的命令行參數,一般設為空即可 "stopAtEntry": false, // 設為true時程序將暫停在程序入口處,一般設置為false "cwd": "${workspaceFolder}", // 調試程序時的工作目錄,一般為${workspaceFolder}即代碼所在目錄 "environment": [], "externalConsole": true, // 調試時是否顯示控制檯窗口,一般設置為true顯示控制檯 "MIMode": "gdb", "miDebuggerPath": "C:\apps\MinGW\bin\gdb.exe", // miDebugger的路徑,注意這裡要與MinGw的路徑對應 "preLaunchTask": "g++", // 調試會話開始前執行的任務,一般為編譯程序,c++為g++, c為gcc "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
對python(默認的就成)
{ // 使用 IntelliSense 瞭解相關屬性。 // 懸停以查看現有屬性的描述。 // 欲瞭解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: 當前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", //是否在程序開始處停止 "stopOnEntry": false } ] }


[火星人 ] vscode的幾項基本配置詳解已經有335次圍觀

http://coctec.com/docs/vscode/show-post-233165.html