我当前的设置假设 8 个空格;我怎么能重新定义它?
这取决于你的意思。您是否希望文件中的实际制表符 出现 4 个空格宽,或者“制表符”实际上是指通过按制表键生成的 缩进 ,这将导致文件字面上包含(最多)4 个空格字符您键入的每个“标签”?
根据您的回答,以下一组设置应该适合您:
set tabstop=4
如果您在源代码中使用实际的制表符,您可能还需要这些设置(这些实际上是默认值,但您可能希望防御性地设置它们):
set softtabstop=0 noexpandtab
最后,如果您希望缩进与单个选项卡相对应,您还应该使用:
set shiftwidth=4
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
要使上述设置永久化,请将这些行添加到您的 vimrc中。
如果您需要进行调整,或者只是想了解这些选项的全部含义,以下是每个选项含义的细分:
tabstop 以“空格”测量的硬制表位的宽度——实际上是实际制表符的(最大)宽度。 shiftwidth “缩进”的大小。它也是用空格来衡量的,所以如果您的代码库使用制表符缩进,那么您希望shiftwidth等于制表符的数量乘以tabstop。这也被=,>和<命令之类的东西使用。 softtabstop 将此设置为非零值tabstop将使制表键(在插入模式下)插入空格组合(可能还有制表符)以 模拟 此宽度的制表位。 expandtab 启用此选项将使制表键(在插入模式下)插入空格而不是制表符。这也会影响retab命令的行为。 smarttab 启用此选项将使制表键(在插入模式下)插入空格或制表符以在光标位于行首时进入下一个制表位的下一个缩进(即前面的唯一字符是空格)。
tabstop
以“空格”测量的硬制表位的宽度——实际上是实际制表符的(最大)宽度。
shiftwidth
“缩进”的大小。它也是用空格来衡量的,所以如果您的代码库使用制表符缩进,那么您希望shiftwidth等于制表符的数量乘以tabstop。这也被=,>和<命令之类的东西使用。
=
>
<
softtabstop
将此设置为非零值tabstop将使制表键(在插入模式下)插入空格组合(可能还有制表符)以 模拟 此宽度的制表位。
expandtab
启用此选项将使制表键(在插入模式下)插入空格而不是制表符。这也会影响retab命令的行为。
retab
smarttab
启用此选项将使制表键(在插入模式下)插入空格或制表符以在光标位于行首时进入下一个制表位的下一个缩进(即前面的唯一字符是空格)。
有关其中任何一个的更多详细信息,请参见vim(例如):help ' _optionname_ '``:help 'tabstop'
:help ' _optionname_ '``:help 'tabstop'