Vim 对 tab Vs 非常友好。空间偏好。据我了解,该tabstop
设置表示制表符的宽度。该设置指定使用and命令shiftwidth
时要增加/减少多少列,而该设置会影响在插入模式下按下键时要插入的空白量。如果打开,Tab 键插入空格字符数。而在关闭的情况下,按下该键会插入与 . 匹配的尽可能少的制表符+空格字符。(如果我错了,请纠正我。)<<>>softtabstop
Tabexpandtab
softtabstop
expandtab
Tabsofttabstop
最后一点让我想知道:是否存在您不想要的实际案例shiftwidth == tabstop && tabstop == softtabstop
?我想不出一个。就我而言,如果我可以在一次分配中将所有这 3 个设置为相同的值,那将是最方便的。例如调用:
:set stab=4
这相当于运行:
:set tabstop=4 softtabstop=4 shiftwidth=4
谁能建议如何做到这一点?
更新
感谢您迄今为止从太多的 php、hobbs和kaiser.se的回复。我没有单独回复每个问题,而是在这里更新问题。
关闭了 expandtab 的 Softtabstop
我在上面说过,在 expandtab 关闭的情况下,按 Tab 键会插入尽可能少的与softtabstop
. 我坚持这一点,但我想我需要解释一下我的意思。我将通过几个例子来尝试这样做。接下来,运行:set list
,以便您可以看到制表符。
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
在插入模式下,按 Tab 键会插入 2 个空格字符。再次按 Tab 键,而不是再插入两个空格字符(总共 4 个空格字符),而是用一个制表符替换前面的 2 个空格。Tabstop 设置为 4,因此单个制表符的宽度与 4 个空格相同。
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
在插入模式下,按制表键插入 1 个制表符加 2 个空格。制表符的宽度为 4,因此总宽度为 6,这是使用 3 个字符实现的。再次按 Tab 键会插入两个制表符,并删除之前插入的两个空格。总宽度为 12,这是使用 3 个字符实现的。
在这两个例子中,Vim 插入了与 softtabstop 匹配的尽可能少的制表符+空格字符。
如果我在关闭 expandtab 的情况下工作,我看不到自己想要通过将 softtabstop 设置为与 tabstop 不同的值来实现的额外精细控制。能够使用单个命令设置tabstop
,softtabstop
和相同的值对我来说仍然很有用。shiftwidth
expandtab 是否使 softtabstop 变得多余?
tabstop=4 softtabstop=0 shiftwidth=4 expandtab
在插入模式下,按 Tab 键会插入 4 个空格。按 delete 键会删除一个空格 - 所以如果你不小心按了 tab 键,你必须退格 4 次。
tabstop=4 softtabstop=4 shiftwidth=4 expandtab
在插入模式下,按 Tab 键会插入 4 个空格。按退格键删除 4 个空格。
如果我在expandtab
打开状态下工作,我希望删除键删除与 tab 键插入相同数量的空格。tabstop
因此,在这种情况下,我也觉得能够同时为softtabstop
和分配相同的值会很有用shiftwidth
。
捷径仍然有用
Vim 提供了如此多的灵活性真是太好了,但我看不到自己需要它。我只想能够选择选项卡的宽度,以及它是“硬”选项卡(使用制表符)还是“软”选项卡(由空格组成)。在硬标签和软标签之间切换很容易(:set expandtab!
),但我希望设置标签的宽度更直接,而不必摆弄 3 个不同的参数。
所以我提出的建议对:set stab=4
我来说仍然听起来不错。