如何解决 ~/. vimrc 中的制表符配置问题



我在~/.vimrc中设置了选项卡配置,如下所示:

设置 ts=4 sts=4 sw=4

我注意到,如果单词长度为 4 个字符或以上,光标将移动到右侧 4 个空格,就像在制表符的配置中一样。

但是,如果单词的长度少于 4 个字符,则它不会移动到 4 个空格。

例:

'name' + <Tab>: tab produced correct number of spaces (i.e 4 spaces)
'age'  + <Tab>: tab produced wrong number of spaces (i.e 1 space only) 

为什么呢?

单词长度会影响制表符吗?

如果我想将光标移动到配置的 4 个空格,无论字长如何,我该怎么办?

多谢

tabstopshiftwidthsofttabstop选项的工作方式是控制缩进到某些通常称为"制表位"的点。 换句话说,它们设计为始终缩进到是设置倍数的列。

因此,如果您的制表位是 4 的倍数,则按 Tab 键将导致光标缩进到 4 的下一个倍数的列。 这是将文字制表符(U+0009,字符制表(插入文档,然后将其呈现在普通终端上的行为(除了那里的宽度通常为 8(。 这会导致文本在固定列上对齐,这是大多数编程语言和文本标记格式所需的样式。

正如您所指出的,如果单词的长度不同,这确实会导致不同的缩进量。 通常在代码中,我们只会使第二列位于下一个制表位,而不关心缩进的长度是否不同。 也就是说,在您的示例中,我们将在第一行按一次 Tab,在第二行按两次,然后在第 8 列开始下一列。

我不知道有什么方法可以强制 Vim 插入除标准编辑命令之外的特定数量的空格。 通常,在这种情况下的用户如果真的想要四个空格而不是缩进到下一个制表位,则只需按空格四次。 当然,如果您需要经常这样做,可以创建映射。

您可能正在插入常规选项卡,这些选项卡根据之前和之后的内容显示可变宽度。我发现打开set list非常方便(尽管您可能想要更改listchars设置(。

如果您真的想要空格(无论如何我发现更好(,请使用set expandtab.

此外,大多数长期用户建议将tabstop保留在 8,因为您无法控制每个选项卡的宽度。

最新更新