当我尝试使用时yml
,它要求无 TAB,仅需空格策略。我意识到我需要为此进行特殊设置。
无论如何,我不能没有标签。所以我想让我的 VI 表现得像这样。
- 当我按下tab键时,输入许多按制表位对齐的空格字符。
- 当我按下backspace键时,删除许多与制表位对齐的空格字符。
我如何存档此功能?
答案1
原始 vi:
不知道et
,您可以尝试使用不同的ts
(tabstop) 和(shiftwidth,即一行或文本块的缩进sw
量)。基本上,只要将 sw 设置为低于分配给 ts 的值(通常是其一小部分),缩进就会使用空格而不是制表符。请注意,当多个 shift 加起来达到一个完整的制表位时,将在该位置使用制表符。两者的默认值均为 8,许多其他命令(例如 expand)都以此为基础,因此,使用混合制表符和空格编写的文本(其中 ts 已调整)在稍后使用不同的制表位设置查看时可能会错位。为了实现您的目标,您可以先使用将所有制表位替换为空格,然后将文本拉入 vi,并尝试这些设置是否适合您。如果它们适合您,您可以通过将它们写入您的 vi 中来使它们永久存在<<
>>
/bin/expand
:set sw=4,ts=20
.exrc
另一种方法可以让您按照自己喜欢的方式使用 tab 和 backspace (而不是使用 和 进行移位<<
)>>
,即允许您按照自己喜欢的方式编写文本,并/bin/expand
在使用 yml 处理之前通过管道传输它,将其作为命令链的一部分,或者从 vi 内部传输:
:1,$!expand
在 vim 中:
您可以使用et
已经建议的 (expandtab) 设置,甚至可以通过取消内置函数将所有制表符转换为空格(这样做的好处是可以知道您的制表位设置,以防您调整它们,而不必根据需要明确告知expand
)。
:set et|retab
其他有趣的设置包括sts
(softtabstop) 和smarttab
,所有这些设置都可以根据你的需要进行调整,甚至ai
(autoindent) 也会表现一致并显示空格而不是制表符。
:set et
:set sw=3
:set sts=3
:set smarttab
:set ai
或者,用一行代码:
:set et sw=3 sts=3 smarttab ai
再次,一旦您同意这些设置,请将它们放入您的.vimrc
答案2
:set et
您必须放弃backspace并使用< <。
您也许能够将退格键映射到取消缩进,但可能会产生不良后果。