如何让vim停止制作硬制表符

Vi.*_*Vi. 3 vim tabs

我按“Tab,Tab,Tab,Left,Delete”以获得所需的缩进。保存文件后,我看到“^I”。如果我按“空格”键 11 次,我会看到“”。

如何让 vim 停止引入新的硬制表符(不改变用户感知的缩进行为或修改现有的硬制表符)?

有很多令人困惑的 smarttabs、shiftwidths、tabstops 和其他选项。怎么做才对?

Dra*_*oan 5

如果您希望 vim 将任何制表符转换为空格,请使用:

set expandtab                     " expand tabs!
Run Code Online (Sandbox Code Playgroud)

您可以设置选项卡转换为多少“空格”:

set softtabstop=4                 " if expandtab on, how many space a tab is
Run Code Online (Sandbox Code Playgroud)

如果 vim 找到现有的制表符并且您希望将其转换为空格,请将其设置为制表符将代表的空格数

set tabstop=4                     " tab spacing of 4 for real tabs
Run Code Online (Sandbox Code Playgroud)

(请注意,set tabstop这不会影响现有选项卡,只会在编辑器中向您显示它们)。

编辑我还将检查 garyjohn 的答案,以获得关于处理现有制表符的更精确答案,以及使用制表符命令时的行为 << >>。(我实际上学到了一些关于它的行为我不知道的东西!)+1对我的回答!