Vim在选项卡Vs方面非常宽容。空间偏好。据我了解,该tabstop
设置指示制表符的宽度。该shiftwidth
设置指定使用<<和>>命令时要增加/减少多少列,而该softtabstop
设置会影响Tab在插入模式下按键时要插入的空白量。如果expandtab
启用,Tab键将插入softtabstop
多个空格字符。而在expandtab
关闭的情况下,按键将Tab插入与匹配的最小数量的Tab +空格字符softtabstop
。(如果我错了,请纠正我。)
最后一点让我感到奇怪:是否有您不想要的实际案例shiftwidth == tabstop && tabstop == softtabstop
?我想不到一个。就我而言,如果我可以在一次分配中将所有这三个值设置为相同的值,那将是最方便的。例如调用:
:set stab=4
这相当于运行:
:set tabstop=4 softtabstop=4 shiftwidth=4
谁能建议如何做到这一点?
更新
感谢这么远的答复太多PHP,霍布斯和kaiser.se。而不是单独答复每个人,我在这里更新问题。
Softtabstop,expandtab关闭
我在上面说过,在关闭expandtab的情况下,按Tab键会插入与匹配的Tab +空格字符,数量最少softtabstop
。我支持这一点,但我认为我需要解释一下我的意思。我将通过一些示例来尝试这样做。要继续,请运行:set list
以使您可以看到制表符。
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
在插入模式下,按Tab键将插入2个空格字符。再按一次Tab键,而不是再插入两个空格字符(总共4个空格字符),而是用一个制表符替换前2个空格。制表符设置为4,因此单个制表符的宽度与4个空格相同。
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
在插入模式下,按Tab键将插入1个制表符和2个空格。制表符的宽度为4,因此总宽度为6,这是使用3个字符实现的。第二次按Tab键将插入两个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
开机状态,则希望使用Delete键删除与Tab键插入相同的空格。所以在这种情况下,我也觉得这将是能够分配相同的值非常有用tabstop
,softtabstop
并shiftwidth
同时进行。
快捷方式仍然有用
Vim提供了这么多的灵活性,这很好,但是我看不到自己需要它。我只希望能够选择选项卡的宽度,以及它是“硬”选项卡(使用制表符)还是“软”选项卡(由空格组成)。硬标签和软标签之间的切换很容易(:set expandtab!
),但我希望设置标签的宽度更加简单,而不必费心使用3个不同的参数。
因此,我提出的类似建议对:set stab=4
我来说仍然很不错。