Vscode编辑器:python, C++和Java等项目开发的集大成者(yyds)
1. 寫在前面
已經(jīng)好久沒有寫博客了,不知不覺有點(diǎn)手生, 現(xiàn)在開始恢復(fù)博客的更新頻率, 作為恢復(fù)的第一篇, 想從實(shí)習(xí)期間學(xué)到的新工具使用入手, 本篇文章雖然是Vscode掛名,但其實(shí)想介紹兩款神器: Vscode和Vim, 這兩個(gè)結(jié)合起來(lái),開發(fā)效率會(huì)蹭蹭蹭!!!
VsCode的使用,這個(gè)是我這兩天剛接觸的,之前也接觸過, 寫Python項(xiàng)目的時(shí)候,就接觸過這個(gè)編輯器,但總感覺不如pycharm寫Python項(xiàng)目香, 還得安裝各種插件好復(fù)雜的樣子。 而最近在項(xiàng)目上需要閱讀一些較為龐大的推薦架構(gòu)項(xiàng)目,全是cpp代碼,并且后期還要基于項(xiàng)目代碼做一些推薦架構(gòu)開發(fā)工作,這就涉及到了寫C++項(xiàng)目。 一開始讀代碼感覺JetBrains的全家桶中Clion挺好,并且和pycharm一樣的風(fēng)格,用起來(lái)也比較順手。 結(jié)果發(fā)現(xiàn)這玩意有個(gè)弊端,就是不同項(xiàng)目之間沒法跳轉(zhuǎn), 對(duì)于項(xiàng)目代碼閱讀不友好。這里說(shuō)的是不同項(xiàng)目之間,Clion在一個(gè)項(xiàng)目?jī)?nèi)部是可以和pycharm一樣跳的, 但一般我們下載一個(gè)cpp項(xiàng)目, 往往需要進(jìn)行編譯,此時(shí)會(huì)把所用到的依賴都下載下來(lái),這時(shí)候就往往有一些繼承性的項(xiàng)目被下載到。 我們讀的時(shí)候呢?可能需要好幾個(gè)項(xiàng)目一塊看,并且希望能互相跳轉(zhuǎn), 因?yàn)橛行┳兞康亩x可能在繼承的父類項(xiàng)目里面。 這個(gè)在Clion里面沒找到好的方式,還得手動(dòng)來(lái)回切換太麻煩。
于是就又接觸回VSCode, 花了一下午時(shí)間完成C++配置相關(guān)工作,并學(xué)習(xí)了一些提高開發(fā)效率的知識(shí),發(fā)現(xiàn)還挺好用的,并且插件非常強(qiáng)大,可以只用這一款編譯器,安裝不同的插件就可以開發(fā)不同的項(xiàng)目,比如C++, Java(Scala)和Python項(xiàng)目, 并且還免費(fèi), 由于我目前最常用的語(yǔ)言就是這三種,涉及的項(xiàng)目也是這三種。 所以呢? 這里打算寫一篇文章來(lái)整理下如何用VsCode來(lái)寫這三種項(xiàng)目,關(guān)鍵是如何進(jìn)行配置(后續(xù)再遇到其它語(yǔ)言的項(xiàng)目,繼續(xù)補(bǔ)充),因?yàn)閂sCode本質(zhì)上其實(shí)就是一個(gè)類似于記事本的編輯器, 如果沒有各種插件和環(huán)境輔助,那就只能寫寫代碼且無(wú)法運(yùn)行,所以如果想開發(fā)各種項(xiàng)目,得事先需要配置才行。
由于我對(duì)這東西,也就剛摸索了一下午的時(shí)間, 所以學(xué)到了多少,整理多少,后面如果再學(xué)到新的操作,會(huì)在這篇文章繼續(xù)補(bǔ)充。 我也是參考了人家很多文章之后才敢總結(jié),我下面的操作都是在Mac上親自走了一遍, 把坑趟完了。
大綱如下:
- VsCode基礎(chǔ)小常識(shí)(兩個(gè)快捷鍵, 連接遠(yuǎn)程服務(wù)器,配置vim, 配置Git)
- VsCode寫C++項(xiàng)目的相關(guān)配置
- VsCode寫Python項(xiàng)目的相關(guān)配置
- VsCode寫Java項(xiàng)目的相關(guān)配置
- Vim的使用
Ok, let’s go!
2. VsCode必備的基礎(chǔ)知識(shí)
2.1 兩個(gè)必備快捷鍵
關(guān)于VsCode是啥,具體怎么安裝這里不會(huì)整理, 官網(wǎng)下載,常規(guī)的安裝軟件操作。下載下來(lái)之后,打開,是英文版,可以打開擴(kuò)展, 搜Chinese安裝中文包, 界面如下圖:
先記住兩個(gè)快捷鍵:
這兩個(gè)快捷鍵建議記好。
另外, 這幾個(gè)常用的快捷鍵最好也知道:
2.2 安裝code
安裝后打開命名面板Command+Shift+P,搜索shell命令,點(diǎn)擊在PAth中安裝code命令,然后在上面菜單欄里面點(diǎn)擊終端,開啟一個(gè)新終端。 在這里面使用code命令打開文件或文件夾
code 項(xiàng)目地址或者文件名 # vscode 就會(huì)在新窗口中打開該項(xiàng)目或者文件如果你希望在已經(jīng)打開的窗口打開文件,可以使用-r參數(shù), 當(dāng)然也可以菜單欄文件然后open項(xiàng)目,但感覺還是有些麻煩。
2.3 連接遠(yuǎn)程服務(wù)器開發(fā)
這個(gè)也是需要掌握的必備技能了, 畢竟我們本地的機(jī)器啥配置自己清楚, 項(xiàng)目往往都放到服務(wù)器上, 而這個(gè)就保證了在自己電腦上遠(yuǎn)程打開服務(wù)器的項(xiàng)目并開發(fā)。
這個(gè)需要安裝插件Remote-SSH, command+shift+x打開安裝。 安裝完了之后,左下角綠色的地方點(diǎn)擊,然后選擇connect to host,輸入IP和用戶名添加即可, 這樣就鏈接到了遠(yuǎn)程服務(wù)器。
2.4 安裝Vim,使得開發(fā)更高效
如果vs code上安裝vim插件,那么寫代碼就可以采用vim的方式了, 各種便捷式命令使得開發(fā)更加高效。 插件搜vim安裝,然后點(diǎn)擊vim插件,就會(huì)看到vim插件的安裝說(shuō)明, 在安裝說(shuō)明里面把第一行在命令行執(zhí)行:
defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false然后需要在setting.json中把vim的配置復(fù)制進(jìn)去即可, 這樣就變成了vim編輯器, 然后就能進(jìn)行vim的各種騷操作了。setting.json文件在哪里? command+,進(jìn)入設(shè)置, 然后上面搜索框輸入: Run Code Configuration, 在查找的結(jié)果中,如果發(fā)現(xiàn)setting.json編輯即可。
下面那段拷貝到setting.json中, 這樣就會(huì)發(fā)現(xiàn)進(jìn)入了vim編輯模式。常用的vim命令還是要會(huì)的, 開發(fā)更加高效。 這個(gè)統(tǒng)一整理到最后面, 借著這次,順便也復(fù)習(xí)下Vim的使用, Linux下簡(jiǎn)直神器。
2.5 配置Git
這個(gè)功能我目前沒用到, 因?yàn)槲乙话阆矚g命令行直接Git相關(guān)操作,等具體用到了再補(bǔ)充。可以先參考這篇博文
ok, 幾個(gè)必備知識(shí)搞定之后, 就可以開發(fā)項(xiàng)目了, 其它功能等用到了可以現(xiàn)查。
2.6 幾個(gè)好用的插件記錄
這里記錄下常用的幾個(gè)好用插件(ctrl+shift+x 搜索安裝即可)
- Python extension for Visual Studio Code: python擴(kuò)展包, 很多python代碼的增強(qiáng)功能,代碼分析,高亮,規(guī)范化
- Python Snippets: 內(nèi)置了很多代碼片段
- Python Type Hint: 對(duì)類型提供自動(dòng)提示功能
- LiveCode: 實(shí)時(shí)展示變量值,并檢測(cè)print進(jìn)行打印
- Better Comments:寫注釋的插件, 支持# todo語(yǔ)法高量等
- autoDocstring: 自動(dòng)生成函數(shù)注釋格式,寫函數(shù)注釋很方便
- Code Spell Checker: 單詞拼寫檢查
- vscode-icon: 不同的文件展示不同的圖標(biāo),方便快速識(shí)別文件類型
- Rainbow Brackets: 不同括號(hào)用不同顏色顯示
- codeTime: 監(jiān)控和統(tǒng)計(jì)寫代碼的時(shí)間
- gitLens和githistory: 查看提交記錄,顯示提交作者信息和修改信息(必備)
- jupyter: 支持jupyter,快速測(cè)試代碼, ctrl+shift+p, 調(diào)出命令行,然后輸入jupyter 可以新建筆記本文件
3. VsCode寫C++項(xiàng)目的相關(guān)配置
這里記錄C++項(xiàng)目開發(fā)的相關(guān)配置, 參考這篇文章
先安裝3個(gè)插件:
- C/C++
- C/C++ Extension Pack
- CodeLLDB
然后檢查下是否按照了clang/clang++ 編譯器
clang++ -v如果未安裝,請(qǐng)前往 app store 下載 xcode安裝。
準(zhǔn)備工作完成,然后打開終端輸入下面命令:
mkdir projects cd projects mkdir hello cd hello code .# 上述步驟也可以在vscode中創(chuàng)建一個(gè)新的hello文件夾代替。接下來(lái),設(shè)置編譯器路徑, 交互面板下, 輸入c/c++選下面這個(gè)UI的:
采用默認(rèn)即可,這里編譯器我選了個(gè)clang++, 也可以默認(rèn)。這樣完事之后, .vscode目錄下,自動(dòng)多一個(gè)c_cpp_properties.json文件, 用于使用vscode自帶的代碼提示工具,支持代碼跳轉(zhuǎn)等, 在這里面進(jìn)行配置如下:
這個(gè)完事。
接下來(lái), 需要配置一個(gè)tasks.json文件, 用于編譯c++文件。
這里面需要注意的是第一個(gè)label,后面的名字,要和下面這個(gè)配置文件名字最后一項(xiàng)一致。 可行性文件這個(gè)保存的是路徑位置。
接下來(lái), 配置launch.json, 這個(gè)是用于使用vscode自帶的debug工具(左側(cè)的小蟲圖標(biāo))
這樣,配置工作完成, 就可以寫程序代碼了。 在該項(xiàng)目下面建立一個(gè)helloworld.cpp文件,寫入如下代碼:
然后command+shift+b就可以進(jìn)行編譯,然后點(diǎn)擊右上角的執(zhí)行按鈕即可運(yùn)行程序了。注意,如果改變helloworld.cpp的位置,比如新建個(gè)src目錄, 把這個(gè)cpp放入src目錄,此時(shí)上面的task.json和launch.json相應(yīng)位置需要做出改變。
如果想debug, 就點(diǎn)擊左邊的小蟲子圖標(biāo), 然后打斷點(diǎn), 在左上角再點(diǎn)擊綠色箭頭,就進(jìn)入debug模式了。
到這里為止, C++環(huán)境配置完成。
在運(yùn)行過程中,我其實(shí)遇到了一個(gè)c++11的bug
[Running] cd "/Users/bytedance/projects/hello/" && g++ main.cpp -o main && "/Users/bytedance/projects/hello/"main main.cpp:9:21: error: expected ';' at end of declarationvector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};^; main.cpp:11:27: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]for (const string& word : msg)^ 1 warning and 1 error generated.這個(gè)卡了我好久其實(shí), 上面文章中是沒有寫的, 這個(gè)原因解決方法可能有兩個(gè):
至此, c++環(huán)境配置完成。
有小伙伴反映說(shuō),有沒有Windows的配置啊? 下面這個(gè)是Windows的配置過程, 我在我電腦上走了一遍, 也整理下。參考的這篇文章
這樣, 編譯器安裝完成,下面在vscode進(jìn)行配置,依然是上面那三個(gè)文件, 這里的布局模式和上面一樣:
這里和上面不一樣的,就是這三個(gè)配置文件內(nèi)部的內(nèi)容, 我這里的配置如下:
-
c_cpp_properites.json:
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "C:\\mingw64\\bin\\g++.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "clang-x86"}],"version": 4 } -
task.json:
{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "g++.exe build active file","type": "shell","command": "C:\\mingw64\\bin\\g++.exe","args": ["-g","${file}", // 如果是多文件編程, 這里的${file}改成${filename}\\*.cpp"-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "C:\\mingw64\\bin"},"problemMatcher": ["$gcc"],"group": "build"},{"type": "shell","label": "C/C++: g++.exe build active file","command": "C:\\mingw64\\bin\\g++.exe","args": ["-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "C:\\mingw64\\bin"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true}}] } -
launch.json:
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++.exe build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "g++.exe build active file"}] }
這里面比較關(guān)鍵的g++.exe和gdb.exe的路徑位置。 其他的采用默認(rèn)就好。
4. VsCode寫Python項(xiàng)目的相關(guān)配置
寫大項(xiàng)目還是建議pycharm, yyds, 而如果寫一些小demon啥的, 可以使用vscode了,這個(gè)配置起來(lái),寫代碼項(xiàng)目也非常方便, 配置Python環(huán)境, 相對(duì)簡(jiǎn)單。
首先,按照Python插件, command+shift+x, 然后搜Python即可安裝插件。然后命令行輸入命令:
mkdir projects cd projects mkdir hello cd hello code .這時(shí)候會(huì)建立一個(gè)hello目錄,如果提示code沒有定義, 先安裝code, 具體方法是command+shift+p, 然后在里面搜shell,就會(huì)顯示這條命令,點(diǎn)擊安裝即可。
在hello里面,建立hello.py文件,這時(shí)候基于擴(kuò)展左下角就會(huì)顯示所用的Python版本, 這時(shí)候,其實(shí)就能簡(jiǎn)單運(yùn)行.py文件了。比如打印個(gè)hello world。
但是如何建立大項(xiàng)目,寫更加復(fù)雜的代碼呢, 這里可以安裝anaconda, 然后在里面建立虛擬環(huán)境,然后在vscode中指定,就可以寫了。 點(diǎn)擊左下角的Python3.8.2這里。
我這里有3個(gè)anaconda3的環(huán)境,我選Arkrec_env的這個(gè), 這里面專門寫tf相關(guān)代碼的,也安裝好了大部分常用的包,點(diǎn)擊選擇即可。如果想寫pytorch代碼,我這里可以選擇第一個(gè)。
左下角就變了環(huán)境。
4. VsCode寫Java項(xiàng)目的相關(guān)配置
想運(yùn)行Java項(xiàng)目, 也非常簡(jiǎn)單,主要包括三步:
首先,就是安裝Extension Pack for Java插件, command+shift+x然后輸入這個(gè)插件名字, 點(diǎn)擊安裝。
這哥們其實(shí)在為我們安裝了6個(gè)Java必備插件:
安裝完畢之后.
第二步,下載并運(yùn)行「JDK」。「JDK」的全稱是「Java Development Kit」,也就是中文所說(shuō)的「Java開發(fā)套件」, 這個(gè)套件就是我們開發(fā)基于Java語(yǔ)言的軟件所需要的一個(gè)工具包。 話不多說(shuō),直接操作。
command+shift+p進(jìn)入命令窗口,搜索Java Overview, 在右側(cè)Configure那里,點(diǎn)擊Configure Java Runtime,通過VSCode默認(rèn)的「AdoptOpenJDK」下載入口,選擇我們需要下載的「JDK」和「JVM」的版本
點(diǎn)擊Download進(jìn)入下載頁(yè)面。下載下這個(gè)pkg包之后,點(diǎn)擊安裝即可。這時(shí)候,Reload Window,然后點(diǎn)擊上面的Installed JDKs, 就會(huì)發(fā)現(xiàn)安裝的JDK路徑以及版本。
第三步,配置「Environment Variable」,也就是中文所說(shuō)的「環(huán)境變量」。command+,進(jìn)入設(shè)置頁(yè)面, 搜索中輸入javahome, 然后點(diǎn)擊
在這里嗎, 把上面的那個(gè)JDK的路徑復(fù)制過來(lái)即可。
這樣就可以愉快的寫Java代碼了, 測(cè)試下, command+shift+p, 在里面輸入Java: create Project,輸入項(xiàng)目名,在src文件夾中,選擇Run運(yùn)行Java代碼,控制臺(tái)數(shù)據(jù)Hello World則為成功。
OK, Java配置完成。
這樣下來(lái), 就把Vscode打造成了能同時(shí)開發(fā)Python, C++以及Java項(xiàng)目的神器了, 當(dāng)然, Vscode還能做更多語(yǔ)言的項(xiàng)目開發(fā), 等后面具體用到了再整理吧, 這玩意輔助上Vim, 項(xiàng)目學(xué)習(xí)起來(lái)也是非常香的哈哈。
5. Vim使用小記
由于目前我對(duì)Vim也是只了解到了些皮毛, 所以只整理些關(guān)于vim常用的操作,記好這些操作,在實(shí)際寫代碼中還是有很大幫助的。
5.1 三種模式切換
首先,三種模式切換必備:
- 從Normal模式到Insert模式(寫代碼模式),esc鍵從編輯模式退回到Normal模式
- 從Normal模式到命令行模式, ":", 反之esc, 命令行里面輸入:行號(hào),直接跳到相應(yīng)行
- 從Normal模式到visual模式, v鍵, 反之esc, 這個(gè)模式類似于我們用鼠標(biāo)選中文本的操作。
- v: 字符可視化模式,此模式下目標(biāo)文本的選擇是以字符為單位的,也就是說(shuō),該模式下要一個(gè)字符一個(gè)字符的選中要操作的文本。
- V: 行可視化模式,此模式化目標(biāo)文本的選擇是以行為單位的,也就是說(shuō),該模式化可以一行一行的選中要操作的文本
- Ctrl+v: 塊可視化模式,該模式下可以選中文本中的一個(gè)矩形區(qū)域作為目標(biāo)文本,以按下 Ctrl+v 位置作為矩形的一角,光標(biāo)移動(dòng)的終點(diǎn)位置作為它的對(duì)角
visual模式下面復(fù)制粘貼操作等都能使用
5.2 必備命令
vim最常用的就是Normal模式, 關(guān)于文本編輯,有一些命令需要記住,這些命令我把他分成了幾個(gè)維度來(lái)記憶。vim核心功能就是文本編輯,所以文本編輯的話,我們可以從增,刪,改,查,復(fù)制,粘貼幾個(gè)維度去學(xué)習(xí)一些常用的快捷鍵。
-
光標(biāo)移動(dòng)(查)
- 字符跳: 控制光標(biāo)移動(dòng): h, j, k, l四個(gè)鍵分別是左, 下,上, 右, 這個(gè)是一個(gè)字符一個(gè)字符的跳, 多練習(xí)記住,就不用方向鍵了,熟悉之后賊高效。
- 單詞跳: w(word): 一個(gè)單詞一個(gè)單詞的跳 ,b(back word): 一個(gè)單詞一個(gè)單詞的往回跳, 在前面加num可以跳num個(gè)單詞, e跳到單詞的尾部
- 行尾行首: $跳動(dòng)當(dāng)前行尾, ^跳到當(dāng)前行首
- 文件首尾: G 跳到文件末尾, gg跳到文件開頭, num+G跳到第num行
- 括號(hào)匹配: %跳到與之匹配的括號(hào)位置
-
增(insert)
- i/I鍵(Insert): 當(dāng)前位置插入/行首插入
- a/A鍵(append): 當(dāng)前位置的下一個(gè)位置/行尾插入
- o/O鍵(open a line): 下行插入/上行插入
-
刪(delete)
- dd(delete): 刪除當(dāng)前行
- dj: 刪除當(dāng)前行+下一行(中間還可以加num), d5j
- dk: 當(dāng)前行+上一行(中間還可以加num),比如d3k
- dh: 刪除左邊字符, 可以加num
- dl: 刪除右邊字符, 可以加num
- daw: 刪除當(dāng)前單詞
- x: 刪除當(dāng)前字符
- D刪除光標(biāo)到末尾的元素
-
改(change)
- caw: 修改當(dāng)前單詞
- ct): 修改到)
-
查(find)
- fs: 查找當(dāng)前行的s, 再使用,查找下一個(gè)s
- /查找內(nèi)容進(jìn)行查找單詞,n跳到下一個(gè),:g/a1/a2/g將文本中所有的a1用a2替換。
-
復(fù)制(yank)和粘貼(past):
- y復(fù)制當(dāng)前字符
- yy復(fù)制當(dāng)前行
- yj: 復(fù)制當(dāng)前行+下一行, 還可以加num, 其他方向鍵同理
- p粘貼
-
撤銷(undo)與反撤銷(redo):
- u撤銷一次, U撤銷對(duì)該行文本做的所有操作
- ctrl+r反撤銷一次
-
保存退出: q直接退出, wq保存退出, w保存但不退出, 后面加!強(qiáng)制的意思。"w!" 和 "wq!" 等類似的指令,通常用于對(duì)文件沒有寫權(quán)限的時(shí)候(顯示 readonly),但如果你是文件的所有者或者 root 用戶,就可以強(qiáng)制執(zhí)行。
5.3 Vim多窗口編輯
編輯文件的時(shí)候,可能參考另一個(gè)文件,如果兩個(gè)文件切換比較繁瑣,可以Vim同時(shí)打開兩個(gè)文件。
命令行輸入:vs第二個(gè)文件目錄, 回車, 此時(shí)垂直切分成兩個(gè)窗口。 Ctrl+ww進(jìn)行兩個(gè)窗口的切換。
5.4 Vim批量注釋
這個(gè)也是非常常用的,不操作鼠標(biāo),直接通過命令來(lái)
- 連續(xù)行注釋: :1,10s/^/#/g 1-10行行首加"#"注釋, ^表示行首, g表示執(zhí)行替換時(shí)不詢問確認(rèn)。如果是取消, 1,10s/^#//g
- c++和Java的注釋用到//, 此時(shí)需要轉(zhuǎn)義。 1,10s/^/\/\//g 注釋1-10行
是否顯示行號(hào): set nu 與set nonu
set mouse=r,此時(shí)可以進(jìn)行選中復(fù)制到粘貼板
目前我用到的Vim常用操作就是這些了, 如果再遇到新的,會(huì)繼續(xù)補(bǔ)充。
總結(jié)
以上是生活随笔為你收集整理的Vscode编辑器:python, C++和Java等项目开发的集大成者(yyds)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 35. 无重叠区间
- 下一篇: [Python从零到壹] 六十一.图像识