Vim 擊中時選項卡大小當自動縮排適用時

Vim 擊中時選項卡大小當自動縮排適用時

我決定將製表符大小從 4 更改為 2,為什麼不呢?其他想要查看程式碼的人肯定可以使用他們的偏好。

不過,有個問題。

如果我按 Tab 鍵,它會插入 2,但 Vim 的自動縮排仍然是 4。

另一個不相關的問題:哪種縮排樣式最適合 C 和類似語言?我一直都用1TBS,但是有很多可供選擇。他們中誰比較專業或更受青睞?

答案1

嘗試將“ shiftwidth”設定為與“ ”相同的值tabstop。更好的是,如果您使用的是足夠新的 Vim 版本,請將 ' shiftwidth' 設為 0,它將預設為 ' tabstop' 設定的值。

答案2

Vim 縮排選項

Vim 主要使用 3 種縮排大小設定:

  • tabstop, ts: 當 Vim 在您開啟的檔案中遇到製表符時,它會將製表符顯示為 {ts} 空格(請參閱製表符幫助,或輸入:help tabstopVim)。
  • softtabstop, sts: 當您編輯檔案並按 Tab 鍵時,Vim 使用此設定來定義插入的表格的寬度(請參閱軟標籤停止幫助,或輸入:help softtabstopVim)。
  • shiftwidth, sw:Vim 在縮排時使用的空格數,可以使用自動縮排功能,也可以使用常用的>>,<<指令。正如 Heptite 所注意到的,這就是您在這種特殊情況下所尋找的。最近版本的 Vim 確實允許你不定義這個選項,shiftwidth然後會採用 定義的值tabstop。非常方便(參見移位寬度幫助)。

例子

例如,如果您使用下列設定:

set sts=4
set ts=2
set sw=8

這些會產生以下行為:

  1. 在檔案中插入製表將產生 4 個空格寬的縮排。
  2. 由於您tabstop設定為 2,這實際上相當於 2 個表格。這很容易檢查,只需使用listlistchars選項來顯示表格。
  3. 如果使用 縮排一行>>,縮排將為 8 個空格寬(因此,基於值,相當於 4 個表格,tabstop與上面相同)。

在此輸入影像描述

Vim 縮排建議(來自 Vim 文件)

來自tabstop幫助(:help tabstop在 Vim 中):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

我個人主要使用第二種解決方案,表格寬度為 2 個空格。

set ts=2
set sts=2
set et     "expand tabs to spaces

答案3

根據http://vim.wikia.com/wiki/Indenting_source_code,「filetype plugin indent on」指令將使程式使用位於 Vim 安裝的 indent 子目錄中的特定於檔案類型的縮排腳本。該頁面還指出「cindent」在 C 和 C++ 檔案中自動使用,您不需要手動使用該命令。

我對 Vim 不是很熟悉,因為我只是偶爾使用它進行一些基本的文字編輯,但我會嘗試手動發出 'cindent' 命令來使用 Vim 的預設自動縮排大小。如果這不起作用,您可以嘗試“文件類型插件縮排”並自行編輯腳本以獲得所需的縮排。

相關內容