所以我有一个问题(显然)。我读了一篇关于“Smart Tabs”的有趣文章,并且我已经在 Emacs 中对此进行了测试,它工作得非常好。
所以目前我正在使用 Emacs,因为我已经在 vim 中尝试过,但我无法让它正常工作。这是我认为与缩进有关的 .vimrc 行。
set autoindent " auto/smart indentation
set cindent
set preserveindent
set copyindent
set smarttab " tab and backspace are smart
set tabstop=4 " 4 spaces
set softtabstop=4
如果您认为其他原因可能会导致下面概述的意外行为,我的 vimrc 在这里为您服务。
预期行为
我希望一个示例程序看起来像这样,我只需输入代码并经常按回车键。(每个“->”代表一个制表符,每个“.”代表一个空格)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
-> printf ("%s\n",
-> ........teststring);
-> function_with_many_arguments (bacon,
-> ..............................indentation,
-> ..............................problems);
-> return 0;
}
</pre>
也就是说,我希望 vim 仅将制表符用于缩进;永远不要对齐。这是因为如果有人减小他们的选项卡大小,我希望函数调用和多行参数集正确对齐,而不管选项卡等于多少个字符。
当前行为
我查看了我能找到的所有资源,这就是我将 vimrc 放在一起的方式。现在,不是执行预期的行为,而是代码如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
-> printf ("%s\n",
-> -> -> teststring);
-> function_with_many_arguments (bacon,
-> -> -> indentation,
-> -> -> problems);
-> return 0;
}
我究竟做错了什么?在我看来,任何和所有对齐都只是两个制表符,不管它们是什么,我希望它用空格缩进到右列。