协慌网

登录 贡献 社区

将标签重新定义为 4 个空格

我目前的设置假设 8 个空格; 我怎么能重新定义它?

答案

这取决于你的意思。您是否希望文件中的实际制表符显示为 4 个空格宽,或者 “tab” 是否实际上是指通过按 Tab 键生成的缩进 ,这将导致文件字面上包含(最多)4 个空格字符你输入的每个 “标签”?

根据您的答案,以下设置之一应该适合您:

  • 对于出现 4 个空格宽的制表符

    set tabstop=4

    如果您在源代码中使用实际制表符,则可能还需要这些设置(这些实际上是默认设置,但您可能希望以防御方式设置它们):

    set softtabstop=0 noexpandtab

    最后,如果您希望缩进对应于单个选项卡,您还应该使用:

    set shiftwidth=4
  • 对于包含 4 个空格字符但使用 Tab 键输入的缩进

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab

要使上述设置永久添加到您的vimrc

如果您需要进行调整,或者只是想了解这些选项的含义,这里是每个选项的含义细分:

tabstop

在 “空格” 中测量的硬 tabstop 的宽度 - 实际上是实际制表符的(最大)宽度。

shiftwidth

“缩进” 的大小。它也是在空格中测量的,所以如果您的代码库用制表符缩进,那么您希望shiftwidth等于制表符的数量乘以tabstop 。这也用于=><命令之类的东西。

softtabstop

将此设置为tabstop以外的非零值将使 Tab 键(在插入模式下)插入空格组合(以及可能的选项卡)以模拟此宽度处的制表位。

expandtab

启用此选项将使 Tab 键(在插入模式下)插入空格而不是制表符。这也会影响retab命令的行为。

smarttab

启用此选项将使 tab 键(在插入模式下)插入空格或制表符,以便当光标位于行的开头时(即前面的唯一字符是空格),转到下一个 tabstop 的下一个缩进。

有关其中任何一个的更多详细信息,请参阅:help ' <em>optionname</em> ' vim 中:help ' <em>optionname</em> ' (例如:help 'tabstop'

要为当前用户永久定义此项,请创建(或编辑) .vimrc文件:

$ vim ~/.vimrc

然后,将下面的配置粘贴到文件中。重新启动 vim 后,将应用选项卡设置。

set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.

set shiftwidth=4    " Indents will have a width of 4

set softtabstop=4   " Sets the number of columns for a TAB

set expandtab       " Expand TABs to spaces

或者是 vim modeline 的简写:

vim :set ts=4 sw=4 sts=4 et :