0

所以我有一个问题(显然)。我读了一篇关于“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;
}

我究竟做错了什么?在我看来,任何和所有对齐都只是两个制表符,不管它们是什么,我希望它用空格缩进到右列。

4

1 回答 1

0

我认为当我开始使用带有 clang 完成的 YouCompleteMe 插件时,这个问题就消失了。顺便说一句,如果你真的想在 Vim 中开发 C,它是最好的插件之一。

于 2013-05-05T21:30:09.650 回答