VSCode是一款免費(fèi)的、開源的、高性能的、跨平臺的、輕量級的代碼編輯器,這篇文章主要介紹了vscode的幾項(xiàng)基本配置,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧。 vscode簡介什么是vscode簡單來說,vscode是一款文本編輯器,而不是ide。這就是說,vscode只提供編輯的環(huán)境而不提供編譯的環(huán)境,如果想要用vscode來集成開發(fā)環(huán)境,則必須經(jīng)過以下幾步: 安裝必須的編譯器(比如mingw,python,texlive等) 配置相應(yīng)編譯環(huán)境(添加環(huán)境變量等) 安裝匹配的vscode的拓展插件 通過拓展插件提供的“屬性”將外部編譯器鏈接到vscode
同時(shí),一個(gè)文本編輯器肯定不會提供運(yùn)行程序的功能,vscode也是如此。要運(yùn)行程序,有如下幾種方法: vscode的一些拓展插件中會提供配置好的終端和運(yùn)行程序的命令,我們可以直接使用; vscode中有專門運(yùn)行程序的拓展插件code-runner,可以安裝后使用; vscode提供了對數(shù)種終端的接口,我們可以在vscode中像使用cmd小黑框那樣使用終端,由此我們可以在vscode終端中運(yùn)行程序;
這樣,我們大致了解了使用vscode編譯、運(yùn)行程序的方法。 vscode的配置首先,我們要明確vscode的配置的最小單元是文件夾,即可以使用打開文件夾功能我們可以把不同的文件夾鏈接到不同的外部編譯器、實(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è)文件夾通過配置可以編譯運(yùn)行不同語言的文件:c++,python和html,同時(shí)可以通過同一個(gè)工作區(qū)直接訪問,這就是vscode的集成性和方便性。 現(xiàn)在,我們一項(xiàng)一項(xiàng)來說: 文件結(jié)構(gòu)vscode提供三級文件結(jié)構(gòu),從工作區(qū)到文件夾到單個(gè)文件: 工作區(qū)是vscode提供的文件夾的“集合”,一個(gè)工作區(qū)可以包含多個(gè)文件夾,正如一個(gè)文件夾可以包含多個(gè)文件。 文件夾是vscode配置的最小工作單元,vscode無法為單個(gè)文件提供配置。 在不同的工作區(qū)中我們可以選擇啟用/禁用不同的拓展插件以節(jié)省內(nèi)存。 settings.json 在這個(gè)json文件中,我們可以通過鍵值對的方式設(shè)置vscode內(nèi)置的或拓展插件的各項(xiàng)屬性,其中就包括外部編譯器地址、各項(xiàng)編譯偏好等等。 同時(shí),vscode提供層層嵌套的settings, 從高到低分別是全局設(shè)置、工作區(qū)設(shè)置、文件夾設(shè)置; 全局設(shè)置默認(rèn)通過ctrl+shift+P后輸入settings.json打開。 我們在文件夾設(shè)置中設(shè)置的屬性會覆蓋工作區(qū)設(shè)置、也會覆蓋全局設(shè)置,反之不成立。 因此,對于全局的設(shè)置,比如編輯器字體等,我們將其在user settings.json中進(jìn)行設(shè)置,工作區(qū)暫不敘述,而對于每個(gè)文件夾都不同的設(shè)置,比如想在不同的文件夾中使用不同的python環(huán)境,我們選擇在folder settings中(即文件夾內(nèi)部的settings.json中)設(shè)置相應(yīng)內(nèi)容。 tasks.json 很多時(shí)候,像在使用linux系統(tǒng)的時(shí)候,我們會自定義一些小腳本來方便的實(shí)現(xiàn)一些功能,vscode就使用tasks來支持快捷實(shí)現(xiàn)一些方便的功能。 有些拓展插件會有封裝好的task可以直接執(zhí)行,我們也可以自定義各種各樣的task,例如實(shí)現(xiàn)“編譯當(dāng)前文件”,“刪除多余文件”等等操作。 tasks比直接定義.bat文件更方便之處在于vscode提供了諸多快捷訪問特定路徑的方式,如當(dāng)前文件夾的路徑,vscode打開的文件夾的路徑,當(dāng)前文件的路徑,當(dāng)前文件不帶拓展名的名稱等等。 tasks.json中定義的任務(wù)僅能在當(dāng)前文件夾(包含該文件夾的工作區(qū))中使用。 launch.json 這其中的內(nèi)容主要是用來對調(diào)試提供支持。**針對不同語言的拓展插件會提供不同的模板。**按f5可以選擇模板并生成文件。 vscode的優(yōu)勢 好看 集成性很強(qiáng) 配置好了后很方便,隨時(shí)可以自己加功能 拓展極其豐富
配置實(shí)例了解了vscode的配置原理,我在下面給出一些我自己配置的內(nèi)容以供參考。 settings.json全局配置 { //vscode的默認(rèn)終端,此處設(shè)置為cmd "terminal.integrated.shell.windows": "C:\WINDOWS\System32\cmd.exe", //拖拽移動文件時(shí)不要確認(rèn)提示 "explorer.confirmDragAndDrop": false, //手動升級vscode "update.mode": "manual", //自動保存,此處設(shè)置為永遠(yuǎn)自動保存 "files.autoSave": "afterDelay", //task的下拉列表中顯示歷史常用的個(gè)數(shù) "task.quickOpen.history": 0, }
對python { //控制是否激活pylint //"python.linting.pylintEnabled": true, "python.linting.enabled": true, //如果使用pylint可能會導(dǎo)致奇怪的報(bào)錯(cuò),加上這幾句可以取消 //"python.linting.pylintArgs": [ //"--generate-members" //], //是否在自動補(bǔ)全的函數(shù)后自動添加括號 "python.autoComplete.addBrackets": false, //是否使用python插件內(nèi)部的自動補(bǔ)全功能 "python.jediEnabled": true, //python環(huán)境的路徑 "python.pythonPath": "C:\apps\Anaconda\python.exe", //python自動補(bǔ)全的搜索路徑 "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" ], //不要顯示錯(cuò)誤彈窗 "latex-workshop.message.error.show": false, //不要顯示信息彈窗 "latex-workshop.message.information.show": false, //不要顯示警報(bào)彈窗 "latex-workshop.message.warning.show": false, //保存時(shí)不要自動編譯 "latex-workshop.latex.autoBuild.run": "never", //默認(rèn)在右邊tab預(yù)覽 "latex-workshop.view.pdf.viewer": "tab", }
tasks.json對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畫圖后進(jìn)行編譯.asy文件,刪除多余文件,將結(jié)果移動至特定文件夾 { // 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", //$開頭的都是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不會在build task的下拉列表中展示 "group": "none", "problemMatcher": [] }, //將生成的eps移動至相應(yīng)文件夾 { "label": "Move EPS", "type": "shell", "command": "move", "args": [ "/Y", //$開頭的都是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 對C/C++ { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 配置名稱,將會在啟動配置的下拉菜單中顯示 "type": "cppdbg", // 配置類型,這里只能為cppdbg "request": "launch", // 請求配置類型,可以為launch(啟動)或attach(附加) "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",// 將要進(jìn)行調(diào)試的程序的路徑 "args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),一般設(shè)為空即可 "stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔?,一般設(shè)置為false "cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄,一般為${workspaceFolder}即代碼所在目錄 "environment": [], "externalConsole": true, // 調(diào)試時(shí)是否顯示控制臺窗口,一般設(shè)置為true顯示控制臺 "MIMode": "gdb", "miDebuggerPath": "C:\apps\MinGW\bin\gdb.exe", // miDebugger的路徑,注意這里要與MinGw的路徑對應(yīng) "preLaunchTask": "g++", // 調(diào)試會話開始前執(zhí)行的任務(wù),一般為編譯程序,c++為g++, c為gcc "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
對python(默認(rèn)的就成) { //使用 IntelliSense 了解相關(guān)屬性。 //懸停以查看現(xiàn)有屬性的描述。 //欲了解更多信息,請?jiān)L問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: 當(dāng)前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", //是否在程序開始處停止 "stopOnEntry": false } ] }
到此這篇關(guān)于vscode的幾項(xiàng)基本配置的文章就介紹到這了,希望對大家有所幫助! 原文鏈接:https://blog.csdn.net/namespace_Pt/article/details/105932818
|