天天看點

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

此文用于記(分)錄(享)我的VS Code環境配置(隻涉及通用化配置,不包含諸如自定義代碼段等定制化配置),主要用于算法/深度學習的日常開發,涉及語言為Python和C++,作業系統為Linux(偶爾用MAC OSX,極少用Windows),開發機器以遠端伺服器為主, 本地環境為輔。

PS: 這并不是一篇教你如何炫(zhuang)技(B)的文章,使用和配置IDE的前提是你 真正需要它 (适合自己的才是最好的,其實你是VIM黨,也可以直接無視本文),雖說 "工欲善其事必先利其器" ,但我還是建議多将時間花在鑽研技術或科研上。
  • VS Code Customization
    • Basic Settings
      • Extensions
      • Settings
      • Color Theme & File Icon
      • Editor
      • Python Linting & Formatting
      • C++ Linting & Formatting
      • Debugging
    • Remote-SSH
      • SSH Key
      • More Features

Basic Settings

首先是比較基礎的配置,包括

插件

以及一些

settings配置

(主要從碩士期間的編碼習慣以及在公司實習期間的開發狀況演變而來),此套配置方案比較适合從事深度學習/算法研究,使用Python和C++作為主要開發語言的童鞋。

Extensions

先羅列一下插件(

extensions

):

  • Python [ ms-python.python ]
  • C/C++ [ ms-vscode.cpptools ]
  • C/C++ Clang Command Adapter [ mitaki28.vscode-clang ]
  • Markdown All in One [ yzhang.markdown-all-in-one ]
  • GitLens [ eamodio.gitlens ]
  • Remote-SSH [ ms-vscode-remote.remote-ssh ]
  • Settings Sync [ shan.code-settings-sync ]
  • Dracula Official [ dracula-theme.theme-dracula ]
  • vscode-icons [ vscode-icons-team.vscode-icons ]
vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

推薦插件

稍微解釋一下各個插件的功能與用途:

  • 首先,代碼高亮和文法檢查是日常開發必須的, 這裡我直接選用微軟官方的 Python C/C++ 這兩個插件, 針對 C/C++ 的文法檢查與代碼補全,我選用的是 C/C++ Clang Command Adapter ,後邊還會提到。
  • 因為個人還經常使用markdown,這裡再加一款優秀的Markdown插件 Markdown All in One ,滿足日常開發需求。
  • GitLens 則是代碼版本管理與合作開發方面的不二選擇。
  • Remote-SSH 則可以說是VS Code最大的神器之一,讓遠端編寫/調式代碼變得異常舒适。
  • 主題方面因為對粉紅色和紫色比較鐘愛,是以選擇了 Dracula ,圖示則是 vscode-icons

前面說了這些是我認為比較通用的插件,其他較為定制化的插件的使用,因人而異,請自行安裝與配置。

Settings

再來看一下配置檔案(

settings.json

):

{
    // theme
    "workbench.colorTheme": "Dracula Soft",
    "workbench.iconTheme": "vscode-icons",
    // editor settings
    "editor.renderIndentGuides": true,
    "editor.formatOnSave": true,
    "editor.insertSpaces": true,
    "editor.mouseWheelZoom": true,
    "editor.renderControlCharacters": true,
    "editor.renderWhitespace": "boundary",
    "files.eol": "n",
    // python settings
    "python.formatting.provider": "black",
    "[python]": {
        "editor.codeActionsOnSave": {
            "source.organizeImports": true
        },
        "editor.tabSize": 4
    },
    // c plus plus settings
    "C_Cpp.clang_format_fallbackStyle": "Google",
    "[cpp]": {
        "editor.detectIndentation": true,
        "editor.tabSize": 2
    }
}
           

同樣,稍微解釋一下:

Color Theme & File Icon

# 顔色主題 Dracula Soft
# 圖示主題 vscode-icons
"workbench.colorTheme": "Dracula Soft",
"workbench.iconTheme": "vscode-icons",
           
vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

吸血鬼主題/vscode Icon主題

Editor

# 顯示縮進參考線,很有用,特别是在嵌套很多層的時候
"editor.renderIndentGuides": true, 

# 在儲存時對代碼進行格式化,非常有用
"editor.formatOnSave": true,

# 當按tab鍵是,用空格代替
# PS: 開啟這個可以充分避免因為tab鍵和space鍵混用而導緻的代碼一團糟
# 特别是在編寫python代碼的時候 XD
"editor.insertSpaces": true,

# 按住 Ctrl 鍵并滾動滑鼠滾輪時對編輯器字型大小進行縮放
# 如在meeting适,share螢幕下VS Code字型太小,就能進行調節
"editor.mouseWheelZoom": true,

# 顯示控制字元
# 這個也非常有用,有時候一些看不到的特殊字元可能會讓你debug半天
"editor.renderControlCharacters": true,

# 顯示空白字元
# 我使用的是 boundary 模式,這樣可以比較清晰地看到每行開頭和結尾的空格字元
"editor.renderWhitespace": "boundary",

# 檔案的EOL,統一成 "n", 
# see https://stackoverflow.com/questions/1552749/difference-between-cr-lf-lf-and-cr-line-break-types
# 避免不同平台之間出現諸如"^M"等問題
"files.eol": "n",
           

PS:友情提示,你可以在json檔案中手動添加或者修改,也可以通過圖形界面進行選擇與修改, 下面放一張效果圖(可以仔細觀察一下右上和右下兩張圖的差別)

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

對應的通用配置項/配置得到的結果

Python Linting & Formatting

Python的代碼檢查與格式化,我使用了

isort

+

black

+

flake8

的方案,類似的方案也可以在衆多開源項目中看到,如

FAIR

的圖像分類訓練架構

pycls

, 通用檢測訓練架構

Detectron2

等等。

  • isort 是一個專門用來對imports進行排序的工具
    • 你可能經常會有到底import的這些package怎麼擺放,isort幫你統一解決了這個問題
    • 官宣很有意思: isort your imports, so you don't have to.
  • black 代替預設的pylint對代碼進行格式化
    • 官方的說法是 Black is the uncompromising Python code formatter
  • flake8 是目前比較常用的靜态代碼檢查工具
    • 我個人認為團隊統一的代碼風格和開發規範是很重要的
# provider 選擇black
"python.formatting.provider": "black",
"[python]": {
    # 在儲存 python 檔案的時候,用isort進行import 排序
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    },
    # tab鍵占用4個字元
    "editor.tabSize": 4
}
           

可以優先在自己使用conda環境中裝好(忘記裝也不要緊,Lint或者Format的時候VS Code會提示你):

conda install black flake8 isort -y
           

全部配置好後會産生如下效果:

  • ctrl + s

    進行檔案儲存
    • 調用isort對imports進行排序
    • 調用black進行代碼格式化
  • 儲存結束

不管是團隊還是個人,統一的 Linting 和 Formatting 都是重要的,我們應該把精力花在coding本身,而不應該在代碼風格和排版上糾結

C++ Linting & Formatting

C++ 這裡,我簡單配置了

Google Style

,從下面的配置也能看清晰看出

"C_Cpp.clang_format_fallbackStyle": "Google",
"[cpp]": {
    "editor.detectIndentation": true,
    "editor.tabSize": 2
}
           
  • 大部分情況下還是推薦用 Clang-Format 來做 C++ 代碼風格管理,大家熟悉的 TensorFlow / PyTorch / Electron 等開源 C++ 項目均有使用
  • 如果是做一些ICPC的比賽,更推薦直接使用 Vim / Code::Blocks ,或者更輕量級的 Sublime Text
vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

Python和C++ lint/format 示例

Debugging

代碼調試這塊可能并不是VS Code的強項,對于一些小的項目或者比較單一的代碼段,使用預設的調試工具進行簡單調試即可,某些比較大型的項目,建議還是在terminal用GDB仔細調試。

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

debug示例

Remote-SSH

相對于本地調試,更多時候我們可能需要在遠端伺服器上進行實驗與開發工作,這個時候 Remote-SSH 這個神器就展現出它的優越性了

SSH Key

SSH的連接配接,主要有如下三種情況:

  • SSH直連 : 比較懶惰的做法就是ssh直連到實驗室的伺服器上,這樣每次輸入賬号密碼就行了
  • 免密登入 : 稍微舒服一點的做法是配置一下 ssh key ,做到免密登入
    • generate a new ssh-key
  • Jump跳闆機 : 通過配置

    ProxyCommand

    或者

    ProxyJump

    ,實作跳過堡壘機/跳闆機, 關于如何配置 ProxyCommand/ProxyJump,推薦兩篇文章給大家,分别對應Windows和Linux,這裡我就不展開了
    • VSCode Remote ssh跳闆機配置(windows)
      • 雖然我不推薦使用windows作為日常開發的系統
    • SSH 通過跳闆機直接通路内網機器(Linux/Mac OSX)
# 直連,設定HostName 和 User 即可
Host v100-dota2
    HostName v100.dota2-ai.com
    User bigballon

# 再加上 IdentityFile 即可實作免密登入
Host 3090-dota2
    HostName rtx3090.dota2-ai.com
    User bigballon
    IdentityFile ~/.ssh/id_ed25519_RTX3090

# 再配置 ProxyJump 實作Jump跳闆機
Host dota2-ai-lab
    HostName lab.dota2-ai.com
    User bg
    IdentityFile ~/.ssh/id_ed25519_dota2
    ProxyJump [email protected]
    # ProxyJump 或 ProxyCommand 都可以
    # 使用 ProxyJump 需要 OpenSSH > 7.3 才可以使用
           
vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

More Features

Remote-SSH的功能 遠不止 通過SSH方式連接配接遠端伺服器 這麼簡單:

  • 在remote端安裝對應的extension
  • 選擇remote端的interpreter
  • 與remote連接配接上的terminal,

可以到達與本地幾乎完全相同的使用體驗,甚至可以直接右鍵單擊檔案或檔案夾進行下載下傳, 将檔案或檔案夾拖拽進VS Code進行上傳,這樣你無需再開啟filezilla之類的傳輸工具, 而VS Code自帶的終端,也同步連接配接至遠端伺服器,而且支援多開,分屏等功能,幾乎所有的操作都可以在VS Code中完成

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

remote遠端連接配接示例

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

遠端插件的安裝

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

安裝後的效果

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

interpreter的選擇

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

完整功能展示

至此,你擁有了一個通用且較為舒适的 VS Code 開發環境, 無論是對于本地還是遠端伺服器的開發,配置同步,還是文法檢查/自動格式化與代碼調試,甚至是檔案上傳下載下傳終端操作等功能,它都是舒心的。 那麼接下來,全心投入到你的學習/研究或工作中去吧。

Do not cry for what you have lost,cherish for what you have experienced.

本文同步釋出于我的 部落格 和 知乎專欄

歡迎轉載,請注明原文作者與出處

vscode html tab鍵補全插件_打造舒适的 VS Code 開發環境

我家貓咪鎮樓 ~~