【发布时间】:2019-08-06 01:18:57
【问题描述】:
我正在学习 C 编程。
我遇到了关于 vim 配置的问题。
以下是我用.vimrc写的vim设置:
set nu
set shiftwidth=4
set tabstop=4
set softtabstop=8
set autoindent
set cindent
set smartindent
syntax on
为了查看标签在哪里,我使用了:set list:
#include <stdio.h>$
int main(void)$
{$
^Iprintf("ab\n");$
^Ireturn 0;$
}$
现在在插入模式下的第 4 行,我想看看在不同位置按下 Tab 键后可以得到多少个选项卡。
结果如下:
当我在n 之后敲击Tab 时,我得到^Iprin^I^Itf("ab\n");$。
当我在\n 之后敲击Tab 时,我得到^Iprintf("ab\n^I^I");$。
以上两种情况我还是蛮理解的。
但是当我在a 之后点击Tab 时,我得到^Iprintf("a^Ib\n");$。
这超出了我的理解。
谁能解释为什么只替换了一个标签?
我认为应该有两个,因为 softtabstop 占用 8 个空格,是 tabstop (4) 的两倍。
【问题讨论】:
-
制表符并不总是具有相同的长度。制表符总是缩进到制表位上的乘法位置。因此,如果您的制表位为 4,则制表位将停在 4、8、12、16... 这意味着如果您在位置 3 处插入制表位,它的长度仅为 1 (3->4)。但是如果你将它插入到位置 5 它将是长度 3 (5->8)
标签: c vim configuration vi auto-indent