后端開發工程師的開發環境配置(Vscode+C/Go/Python等)


前言

        我是一名后端開發工程師,主要語言是C、Go、Python。早年做C開發的時候都是在windows下開發,一直使用的是soure insight,尤其是時隔多年更新的4.0版本解決了中文亂碼等問題,用起來更是得心應手。后來轉到Mac下開發,雖然可以用wine運行windows程序,但總感覺別扭,也是時候做一些新的嘗試了。

        為了家里和公司開發環境的統一,對開發工具的要求首先就是要跨平台,slickedit、clion、understand、sublime、atom我都嘗試過,最終我選擇了vscode。主要幾個原因:支持多種語言開發;官方支持中文;插件安裝方便;完全免費(公司不允許安裝盜版軟件);運行速度快;支持遠程開發;顏值較高。蘿卜白菜各有所愛,適合自己的才是最重要的。

        vscode不是IDE,需要安裝各種依賴的插件和配置才能很好的工作,因此和soure insight的開箱即用,適應起來需要些時間。經過這幾年的發展vscode以及很強大了,但作為C開發它還是有一些不足,例如不能像soure insight顯示函數調用關系圖(注,這里說的是關系圖,查找函數在哪里被調用是沒問題的),目前我是使用doxygen+graphviz工具作為補充工具。understand在這方面做的比較好,如果在家里看代碼的話我也會配合着使用。

本文將以windows下為例做配置說明,其他系統下類似。最后,歡迎大家討論和轉載,本文也會持續更新。轉載請注明來源:https://www.cnblogs.com/realjimmy/p/12990433.html

 

一、插件安裝

我用到的開發語言包括C、Go、Python、Shell、Lua、Mysql。這是我安裝的所有插件,其中Remote是用於遠程開發(下面會有專門的章節介紹),Setting Sync用於vscode配置的備份,可在不同設備間同步,其他的根據插件名字基本都能明白其作用,這里就不做過多解釋,各位可以根據自己的需求增刪插件。

clipboard

clipboard

有的插件還需要安裝其他額外的輔助工具,比如在打開c文件時,會自動下載clang-format等工具;打開go文件時會自動安裝gotools,需要注意的是gotools安裝特別慢,經常一輪安裝下來總有幾個裝不上,不過也沒有關系,多試幾次總能成功。

 

二、各種語言開發環境

本章節主要是基礎開發環境的配置,包括依賴編譯工具等,具體的vscode配置會在第三章介紹。

2.1 C語言開發基礎環境

2.1.1 安裝Mingw-w64(僅windows需要)

編譯代碼、代碼調試都需要用到。

下載地址:https://sourceforge.net/projects/mingw-w64/files/

clipboard

選擇適合自己的版本。

  • i686 的是32位版,x86_64 的是64位版
  • posix和win32是os接口類型
  • sjlj/seh/dwarf 是異常處理方案,具體的差異可以自行百度

seh :支持64位,新,性能比較好

sjlj :支持64+32位,舊,穩定性好。

dwarf :支持32位

我選擇,x86_64-posix-seh。安裝好后需要配置環境變量,如:C:\mingw-w64\mingw64\bin

2.1.2 安裝Clang(僅windows需要)

語法檢查需要用到,編譯代碼時可以用mingw的gcc,也可以用clang。這里我們直接下載編譯好的安裝包。

https://releases.llvm.org/download.html

clipboard

2.1.3 添加頭文件目錄

我的開發環境是windows下連到linux虛擬機下開發linux程序,因此很多標准庫的頭文件都會有波浪線報錯,需要手動指定一下。

方法一:指定Mingw-w64里的頭文件

能夠去掉波浪線,但是對於printf這類函數的參數提示有點問題。

方法二(我使用此方法:從linux下拷貝頭文件

例:將下面兩個文件夾拷貝到windows下 D:/code/vscode-include/linux-c/usr/include

/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/

/usr/include/

接着我們在vscode的項目里指定頭文件(換工作目錄了需要重新指定),打開工程目錄,打開C文件,選擇win32-->編輯配置。

除了標准庫外,項目里的其他頭文件如果找不到也可以用這種方式添加。

clipboard

clipboard

指定頭文件目錄

clipboard

2.1.4 編譯運行與調試

1)快速編譯運行

如果是單個.c文件(比如測試代碼),右鍵點run code即可運行(依賴CodeRunner插件)。

clipboard

2)使用gdb調試

涉及兩個配置文件,tasks和launch。tasks可以被用來做編譯,而launch用來執行編譯好的文件。

首先配置tasks:

F1,輸入tasks,選擇配置任務

clipboard

我這里配置編譯運行單個文件為例,幾個注意事項:

  • label:這個任務的名詞,一會兒在launch里配置的preLaunchTask(執行前的任務)名稱要和這個一直。
  • command:編譯執行的命令,我這里寫的gcc,也可以是其他編譯時要執行的命令。
  • arg:執行命令的參數,這里通過gcc的參數-o指定了編譯后可執行文件的路徑。
  • cwd:命令的目錄,這里指向mingw64的bin命令。

clipboard

接着配置launch,

clipboard

clipboard

注意事項:

  • program:指定了運行時的程序,和task對應。
  • miDebuggerPath:指定gdb路徑。
  • preLaunchTask:指定運行前的任務,即編譯任務,與前面配置的task對應。

clipboard

現在可以開始調試代碼了,在代碼行號左邊點擊即可打斷點,點綠色小三角或是F5開始編譯、執行。

clipboard

在調試控制台可以輸入gdb命令,格式:-exec <command>

clipboard

2.2 Go語言開發基礎環境

2.2.1 下載Go安裝包

根據不同操作系統自行下載

下載地址:

2.2.2 Go安裝

【windows下部署】

1)安裝注意路徑不要有空格和中文,環境變量也會自動配置。

2)打開cmd輸入go version,查看是否安裝成功

3)配置$GOPATH和工作空間

在系統環境變量中添加$GOPATH變量,表示工作代碼空間。

注:也可以使用go env -w 命令配置,但是如果有環境變量了則會報錯。

在$GOPATH目錄下創建以下三個目錄

/src 存放源代碼

/pkg 存放編譯文件

/bin 存放執行文件

【Linux部署】

1)解壓到/usr/local目錄下

tar zxvf go1.13.4.linux-amd64.tar.gz

mv go /usr/local/

2)建立保存go工作目錄,將是下載組件的默認路徑

mkdir /root/go_src

3)設置環境變量

在root用戶下執行 vim /etc/profile命令在末尾添加配置並保存

export GOPATH=/root/go_src

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

【Mac部署】

1)下載pkg安裝包快速安裝
2)根據shell類型修改,我用的是zsh,因此修改~/.zshrc文件
vi ~/.zshrc

export GOPATH=/root/go_src

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

4)重新登錄session

為的是讓環境變量生效,驗證:
輸入go version能看到版本信息,go env能看到正確的GOPATH路徑

2.2.3 設置代理

通過go下載第三方庫非常慢,可以通過設置代理來加速。
 
GO111MODULE設置為auto
這里先設置為auto,待使用中問題解決了在on。可以在got get的時候手動set GO111MODULE=on GOPROXY設置為https://goproxy.cn,direct
之所以在后面拼接一個direct,如果代理沒有找到庫,就在原地址里直接查詢。
 
方法一:Go 1.13 及以上(推薦)
打開你的終端並執行
go env -w GO111MODULE=auto
go env -w GOPROXY=https://goproxy.cn,direct
注:也可以設置GO111MODULE=on,強制開始gomodule功能。如果設置auto,這樣會根據目錄情況決定gomodule是否開啟。
其他設置代理的方法參考: https://goproxy.cn/

2.2.4 測試go工具

第一個go程序

在工作目錄里創建hello.go

package main import "fmt" func main() { fmt.Printf("hello, world\n") }

1)使用go run直接運行:

$go run ./hello.go

2)編譯后運行,可執行文件為文件夾名

go build hello.go

./hello 

2.2.5 dlv調試工具安裝

$ git clone https://github.com/go-delve/delve.git $GOPATH/src/github.com/go-delve/delve

或者 go get github.com/derekparker/delve/cmd/dlv

$ cd $GOPATH/src/github.com/go-delve/delve

$ make install

2.3 Python開發環境搭建

2.3.1 下載安裝python

下載地址:https://www.python.org/downloads/

根據提示安裝即可。

2.3.2 設置國內pip資源

國內還有很多pip鏡像源,可以根據個人的網絡資源自由替換index-url和trusted-host的值。這里設置阿里雲作為國內pip資源

【Linux下的配置文件】
編輯配置文件$HOME/pip/pip.conf,添加如下內容。如果配置文件不存在直接創建即可。
我們可以通過以下命令確認$HOME的具體路徑echo $HOME
 
【Windows下的配置文件】
編輯配置文件%APPDATA%\pip\pip.ini。
可以通過以下命令確認%APPDATA%的具體路徑echo %APPDATA%
 
【Mac下的配置文件】
mkdir ~/.pip
vim ~/.pip/pip.conf
 
配置文件內容:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple
[install]
trusted-host=mirrors.aliyun.com
 

#index-url使用Alibaba的鏡像源trusted-host = mirrors.aliyun.com

#trusted-host標記Alibaba的鏡像源服務器為可信賴主機

2.3.3 安裝更好的交互編程工具

pip install ipython

 

3 vscode配置

3.1 我的配置文件參考

直接貼出我的配置,部分沒有注釋的,可以看vscode給出的解釋。

{
    //---------------【GO相關配置】-------------------
    "go.gopath": "D:/code/go",
    "go.goroot": "c:/go",
    "go.formatTool": "goimports", //可選格式化工具,看大家都選這個
    "go.useLanguageServer": true, //不開的話跳轉很慢
    "go.lintOnSave": "off", //在保存代碼時自動檢查代碼可以優化的地方,並給出建議
    "go.toolsGopath": "D://code/go", //第三方插件安裝位置
    "go.testOnSave": false, //保存時執行go test
    "go.testFlags": [ //-v參數能保證執行go test時有輸出
        "-v"
    ],
    //--------------【python相關配置】--------------
    //treu使用IntelliSense引擎,false使用Microsoft Python Analysis Engine
    "python.jediEnabled": true,
    "python.pythonPath": "C:/Users/jimmy/AppData/Local/Programs/Python/Python38/python.exe",
    "python.autoComplete.extraPaths": [
        //設置python的第三方庫路徑
        "C:/Users/jimmy/AppData/Local/Programs/Python/Python38/Lib/site-packages",
    ],
    "python.autoComplete.addBrackets": true, //自動補全函數帶括號
    "python.formatting.provider": "yapf", //格式化引擎
    //--------------【C相關配置】------------------------
    "C_Cpp.updateChannel": "Default", //自動更新插件,設置Insiders為自動更新內部版本
    //c代碼格式化方案
    "C_Cpp.clang_format_fallbackStyle": "{BasedOnStyle: LLVM, IndentWidth: 4, ColumnLimit: 0}",
 //---------------【配置文件同步】--------------------- "sync.gist": "xxxx",//根據實際情況配置,這里不用手動配置,通過界面配置后會自動填寫到這里 "sync.quietSync": false, "sync.syncExtensions": true, //----------------【調試相關】-------------------- //code-runner是否在終端中運行,但這回生成一個臨時文件,可以在executorMap里刪除(但刪除文件有風險) "code-runner.runInTerminal": false, "code-runner.executorMap": { "c": "cd $dir && gcc $fileName -o D:/tmpFile/$fileNameWithoutExt && D:/tmpFile/$fileNameWithoutExt", }, "debug.onTaskErrors": "abort", //控制在運行預啟動任務后遇到錯誤時做法,abort退出 //----------------【遠程開發的目標設備】-------------------- "remote.SSH.remotePlatform": { "192.168.25.129": "linux" }, //----------------【保存文件時自動在文件首行添加注釋】-------------------- "fileheader.customMade": { "Author": "realjimmy", // 作者 "LastEditTime": "Do not edit", // 文件最后編輯時間,保持不要修改,會自動替換 "Blog": "https://www.cnblogs.com/realjimmy/", "Describe": "", // 描述信息 }, //----------------【path路徑自動填充】-------------------- "path-intellisense.extensionOnImport": true, //----------------【高亮插件配置】-------------------- "highlightwords.colors": [ { "dark": "yellow", "light": "yellow" }, { "dark": "Cyan" }, { "dark": "Pink" }, { "dark": "LightGreen" }, { "dark": "LightSteelBlue" }, { "dark": "MediumOrchid" }, { "dark": "cornflowerblue" }, { "dark": "DarkOrange" }, ], "highlightwords.box": { //實驗結果:false全部填充,true僅填充外框 "dark": false }, //--------------------【shell格式化工具配置】-------------------- "shellformat.path": "c:/Users/jimmy/.vscode/extensions/foxundermoon.shell-format-7.0.1/bin/shfmt_v3.1.0_windows_amd64.exe", //---------------【vscode其他配置】--------------------- "editor.parameterHints.enabled": false, //輸入時函數參數提示 "editor.formatOnType": false, //輸入一行時格式化代碼 "editor.formatOnPaste": false, //黏貼時格式化代碼 "editor.formatOnSave": true, //保存時格式化開關 "editor.renderControlCharacters": true, "editor.rulers": [ //編輯器顯示標尺 80 ], "editor.quickSuggestionsDelay": 1, //控制顯示快速建議前的等待時間 (毫秒) "editor.snippetSuggestions": "top", //代碼片段建議比如if時的代碼片段建議,放在top "editor.fontSize": 18, "editor.renderWhitespace": "selection", //空白字符的顯示方式 "editor.renderLineHighlight": "all", //當前行高亮方式 "editor.tokenColorCustomizations": { // "comments": { // // 設置字體樣式加粗bold下划線underline斜體italic等 // "fontStyle": "", // // 設置字體顏色 // "foreground": "#4caee2" // }, // 注釋 //"keywords": "#0a0", // 關鍵字 //"variables": "#f00", // 變量名 //"strings": "#18170fbd", // 字符串 //"functions": "#5b99fcc9", // 函數名 "numbers": "#ff819c", // 數字 "functions": { // 設置函數的字體樣式 加粗 下划線 斜體等 "fontStyle": "bold", }, }, "editor.suggestSelection": "first", "editor.hover.delay": 300, // 控制鼠標放在代碼上懸停提示前的等待時間 (毫秒) "terminal.integrated.shell.windows": "C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe", //默認終端 "window.zoomLevel": -1, "http.proxySupport": "off", // "terminal.integrated.fontFamily": "Menlo for Powerline", "terminal.integrated.rendererType": "dom", "explorer.confirmDragAndDrop": false, "workbench.colorCustomizations": { //選中文本的顏色 "editor.selectionBackground": "#33609e", //當前相同文本高亮的顏色 // "editor.selectionHighlightBackground": "#0d7c21", //鼠標所在行的顏色 // "editor.lineHighlightBackground": "#00000000", "editor.lineHighlightBorder": "#033d4a", }, "workbench.settings.useSplitJSON": true, //json配置時使用拆分json編輯器來顯示默認配置 "workbench.editor.revealIfOpen": true, "emmet.triggerExpansionOnTab": true, "git.path": "C:/Program Files/Git/bin/git.exe", "git.autofetch": false, "extensions.autoUpdate": true, //自動更新插件 } 

 

3.2 配置備份和同步Settings-sync

vscode配置可謂是核心中的核心,如果日積月累的配置丟了是真的會哭,另外如果你有多台設備可以方便在不同設備間同步配置。

3.2.1 前期准備

原理是自動上傳到github的gist里。因此需要用到github賬號,

1)注冊github.com賬號

2)測試gist.github.com地址是否能訪問,若沒有FanQiang可以通過配置host指向gist.github.com來解決

例如windows下:

打開C:\Windows\System32\drivers\etc\hosts文件

在最后行添加192.30.253.118 gist.github.com

注:能夠正常訪問gist.github.com了后面的步驟才有意義。

3.2.1 Settings Sync插件配置

1)下載vscode里下載setting sync插件

clipboard

2)與github同步相關的配置

如果你曾經使用過,建議先清一下sync的配置。

vscode里按F1,Sync重置。

clipboard

執行同步上傳快捷鍵 shift+alt+u,會彈出配置界面,點擊Login With Github

打開網頁認證github,顯示Success即通過認證,此時會在配置里自動填寫令牌。

clipboard

這里會自動創建訪問github的令牌,並寫入插件配置中(和傳統方式建立的令牌不一樣,在github頁面上沒有顯示,不確定是不是臨時的令牌,我有的時候會連不上)

clipboard

如果你是第一次使用,會提示創建gists,跟着向導配置就可以了。成功即可忽略下面步驟。

如果沒有向導,繼續按下面的步驟操作。

github上點擊You gists

clipboard

clipboard

以下信息隨意寫,正文內容會在同步后被覆蓋

clipboard

url里最后一串記就是GistId,記下來,需要在vscode里配置

clipboard

回到vscode頁面,點擊編輯配置

clipboard

將剛才復制的GistId填寫上

clipboard

注意右邊的令牌內容,在前面指向login with github的時候,登陸成功會自動生成並填寫,如果后續要更改可以在github上通過以下方式:

clipboard              clipboard

clipboard

clipboard

此時會生成一個新的令牌。

3)配置同步及其他配置

執行shift+alt+u同步,會提示強制上傳,點確定。終端輸出以下信息表示同步完成

clipboard

我們在github上看到,原本的內容也已經被更新。這個工具提供的是同步配置、以及插件名稱。不會把插件本身上傳到github上。

clipboard

主要就兩個快捷鍵,上傳及下載

上傳: Shift + Alt + U

下載:Shift + Alt + D

配置可以在高級選項里配置

clipboard

clipboard

4 遠程開發方案

當你的代碼不在本機,比如遠端設備或虛擬機,用vim看代碼不是所有人都適應,那還有哪些解決方案呢?在此之前我的方案是:1)在遠端設備執行mount命令,將本機目錄掛載到遠端 2)在本機使用samba將遠端目錄掛載到本機。

本章節將提供另外兩個由vscode支持的遠程開發解決方案。

4.1 remote-ssh插件

最方便的遠程開發方案,但目前只支持64位系統,對libc版本也有要求,centos7下測試沒問題,centos6就報libc版本不對。

環境:vscode在windows,服務器在linux

1)安裝remote-ssh插件

2)目標主機上安裝git2.0以上(可選)

先用git --version查看版本,如果低於2.0,先卸載舊版

yum remove git

添加新源后安裝新版

yum install -y https://centos7.iuscommunity.org/ius-release.rpm yum install -y git2u

3)將文件watches限制增加到最大值,這個跟vscode打開文件個數限制有關。

sudo vim /etc/sysctl.conf

增加一行放

fs.inotify.max_user_watches=524288

保存,最后在控制台執行

sudo sysctl -p

即可正常使用。

4)vscode連接

clipboard

5)點擊vscode插件管理,在遠程安裝各種插件,如:

clipboard

5)為了方便最好通過ssh-key設置一下ssh免密登錄。步驟略。

4.2 使用sftp插件

SFTP插件自動上傳文件的方案,適用於非64位系統,或centos6等libc版本較低的系統。

clipboard

在.vscode文件夾下的sftp.json文件中配置對應的信息,對應參數如下

name:你可以隨便起,建議純英文。

host:你服務器端的Ip地址。

protocol:默認填寫sftp即可。

port:默認填寫22。

username:服務器端的用戶名。

remotePath:服務器端存放本地代碼和數據的路徑。

password:服務器端的登錄密碼。

uploadOnSave:默認true。

syncMode:默認update

watcher:files可以默認為"/*",意思是監控當前文件夾下的所有文件,autoUpload,autoDelete也都默認為true,這樣你在新增或刪除任何東西的時候,本地和服務端都會實時保持同步

ignore:方式制定忽略同步的文件,比如一些很大的數據文件其實不需要被同步。

完成配置,在本地進行更改后點擊ctrl+s進行保存,刷新服務端對應的代碼文件,你會發現也被更新了。

 

5 快捷鍵說明

官方快捷鍵介紹:

https://code.visualstudio.com/docs/getstarted/keybindings

clipboard

這里直接貼出官方快PDF文檔:

https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf

https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf

https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf

 

6 恢復默認配置

有的時候vscode出現問題,卸載重裝發現配置沒有改變,你可能想要完整的恢復全新配置(包括插件),可以刪除一下路徑里的內容

插件存放目錄:C:\Users\jimmy\.vscode\extensions

配置保存路徑:C:\Users\jimmy\AppData\Roaming\Code

 

7 結束語

本文章會隨着后續使用不斷更新,喜歡的可以關於一下我的博客。https://www.cnblogs.com/realjimmy/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM