VScode如何根據不同文件類型設置諸如tab的長度、ruler位置等選項?

各位好,本人之前一直使用Sublime text,最近開始使用VScode。工作中主要涉及的語言包括Fortran、Python、C等,以及偶爾需要手寫Makefile。

找了很久,沒有找到VScode中依據不同文件類型而進行的一些設置,主要包括:

設定tab長度(如Fortran中循環較多,每行長度有限制,一般使用2空格縮進);

是否用space取代tab(如Makefile中只識別tab,而Python中一般不使用tab);

ruler位置(如Fortran中常用的是6, 72, 132,Python中常用的是80)等方面。

在Sublime text中,有提供Syntax Specific - User的解決方案:sublime text 如何根據不同的文件類型來設置tab的長度? - 前端開發

不知是否是我沒有找到,還是目前沒有較好的解決方案?

謝謝

=========== 分割線 ==============

2016年8月15日17:57:20 更新

根據Belleve的回答,我安裝了EditorConfig的插件,但顯示build failing,如圖:

按照官網:EditorConfig 的教程,我設置.editorconfig內容如下:

# some stuff

# 4 space indentation
[*.py]
indent_style = space
indent_size = 4

# Tab indentation (no size specified)
[Makefile]
indent_style = tab

# 2 space indentation
[*.{f,F,f77,F77,for,FOR,fpp,FPP,f90,F90,f95,F95,f03,F03,f08,F08}]
indent_style = space
indent_size = 2

# other stuff

但並沒有效果。不太清楚目前是何種原因?

=========== 分割線 ==============

2016年8月15日18:41:37 更新

問題基本解決了:

1. build failing 是 Travis CI - Test and Deploy Your Code with Confidence 的符號,剛跑去逛了一下 = =

2. .editorconfig需要放在項目下面,並且只對新建文件有效,不會影響到已經存在的文件,例如改變了行尾

,需要進行保存才會生效。

最後感嘆一下 = = 感覺vscode還不是特別靈活


  • 其實不用裝插件,vs code 是默認支持不同語言文件載入不同配置的,首選項 -&> 設置 setting.json (雖然 JSON 不支持注釋,但 vs code 的此配置文件支持注釋)示例:

{
"[html]": {
"editor.tabSize": 4
},
"[css]": {
"editor.tabSize": 4
},
"[javascript]": {
// 按 "Tab" 時插入空格。該設置在 `editor.detectIndentation` 啟用時根據文件內容進行重寫。
"editor.insertSpaces": true,
// 一個製表符等於的空格數。該設置在 `editor.detectIndentation` 啟用時根據文件內容進行重寫。
"editor.tabSize": 2
},
"[typescript]": {
"editor.tabSize": 2
},
// fortran 需要在 vscode 擴展中安裝 fortran 語言支持後設置才生效
"[fortran]": {
"editor.tabSize": 2
}
}

然後重載編輯器生效設置,這時候打開不同的文件,會看到右下方的 tab 空格數為各語言設置中的值。

  • 還有一種簡單的進入各語言設置的方法就是:打開相應語言的文件 -&> 點擊右下角選擇語言模式的選項 -&> 在出現的下拉菜單中選擇 「配置 xx 語言基礎設置」 -&> 然後便會出現 setting.json 文件,游標停留在相應語言子設置的對象內,此時寫在語言子設置對象內的設置便會在打開相應語言文件時載入。(一些語言 vs code 本身不支持需要裝相應語言擴展)

  • 最後解釋下設置後不生效的可能情況,和

該設置在 `editor.detectIndentation` 啟用時根據文件內容進行重寫

這句話我的理解:

打個比方,你對於 JavaScript 的 tabSize 設置可能是2個空格,但是你打開了一個 demo,它的代碼以4個空格為縮進,那麼這個時候 editor.detectIndentation 會檢查到此文件內容以4個空格為縮進,便臨時將 tabSize 設置改為4個空格,這就時為什麼你可能設置為 tabSize=2,而打開一個文件右下角顯示 tabSize=4。(所以其實不改 tabSize,寫的時候自己手動空兩格,之後用回車縮進都會變成2格)

(個人水平有限,內容可能有誤,歡迎大家批評指正)


裝個 editorconfig 的插件


首選項-&>用戶設置,配置 Settings.json 文件,例如:

//將設置放入此文件中以覆蓋默認設置
{
// 顯示垂直標尺的列,80字元的ruler
"editor.rulers": [80],

//一個製表符等於的空格數。該設置在`editor.detectIndentation`
啟用時根據文件內容進行重寫。
"editor.tabSize": 4,
}


調整縮進後為2後,為什麼每次一保存,代碼縮進又自動變為4了


推薦閱讀:

Emacs 有什麼奇技淫巧?
如彈鋼琴般使用 Emacs 是怎樣一種體驗?
怎樣學習 Emacs?
如何優雅地使用 LaTeX 編輯公式?
電影《危機解密 》(The Fifth Estate )中使用的是什麼編輯器?

TAG:文本編輯器 | Fortran | VisualStudioCode |