gpt4 book ai didi

c - 在 Vim 插入模式下按下 Tab 键后得到的 Tab 数

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:08 25 4
gpt4 key购买 nike

我正在学习 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;$
}$

现在在 Insert 模式下的第 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) 的两倍。

最佳答案

这是 softtabstop 和(常规)tabstop 之间交互的结果。

您的 softtabstop 说当按下 Tab 键时,结果应该与 8 列的倍数对齐。当您在 a 之后按下 Tab 键时,您已经在第 13 列,因此只需一个 4 宽度的制表符就足以到达那里。在其他情况下,您分别为 16 位和 8 位,因此需要两个 4 宽制表符才能与 8 宽软制表符对齐。

PS:如果你想要奇怪的行为(当然不推荐),设置tabstop=3 softtabstop=8。然后,当您按下 Tab 键时,您会得到空格和制表符的组合。

PPS:所有这些都是我不喜欢文字制表符的部分原因。它们不稳定,它们的显示取决于每个开发人员的制表位设置。在我的组织中,我努力插入每个人使用 :set expandtab(或每个开发人员编辑器中的等效项)并使用空格字符来实现稳定和可重现的显示。在我的工作中,我唯一能容忍制表符的地方是 makefile,我别无选择。

关于c - 在 Vim 插入模式下按下 Tab 键后得到的 Tab 数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55174496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com