5

我目前在 VIM 中 C 的缩进设置中有以下设置:

set cinoptions=l1

这允许 autoindent 自动处理case语句的缩进,因此我自动获得以下类型的对齐:

switch(intForSwitching) {
   case 1: {
      // Comment
      // More comments
      break;
   }
   case 2: {
      //Comment
      break;
   }
   default: {
      break;
   }
}

但是,这仅在每个案例(在语句之后)都用大括号 . 包裹时才有效{}。如果我需要在这种情况下声明新的临时变量,我只在 case 语句中使用大括号,因为它引入了新级别的块范围。因此,以下示例给出了我不想要的缩进,因为 case 语句与其执行的代码对齐,这使得将 case 语句与与其关联的代码块分开变得更加困难:

// This is what I get
switch(intForSwitching) {
   case 1: {
      // Comment
      // More comments
      break;
   }
   case 2:
   //Comment
   break;
   default:
   break;
}

// This is what I want
switch(intForSwitching) {
   case 1: {
      // Comment
      // More comments
      break;
   }
   case 2:
      //Comment
      break;
   default:
      break;
}

此外,ifdef语句不再起作用。以前,自动缩进会将所有预处理器指令对齐在第 0 列,即:

char c;
if (c) {
#ifdef TESTING
   printf("%c", c);
#endif
}

现在,它将它与我不想要的代码对齐。IE:

char c;
if (c) {
   #ifdef TESTING
   printf("%c", c);
   #endif
}

有没有办法在我使用大括号包围单个案例时保留现有的对齐方式,并且在我不使用大括号的情况下也有类似的对齐方式?

谢谢你。

4

1 回答 1

0

最后,我更改了一些环境变量并修复了所有问题,尽管使用了相同的VIM二进制文件。

之前:

DEV_PATH="/dev/bin:/dev/sbin:/dev/usr/bin:/dev/usr/sbin"
MACPORTS_PATH="/opt/local/bin:/opt/local/sbin"
SYSTEM_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
PATH="${SYSTEM_PATH}:${DEV_PATH}:${MACPORTS_PATH}"

现在:

PATH="${MACPORTS_PATH}:${SYSTEM_PATH}:${DEV_PATH}"

在从 VIM 中发出命令后,我注意到了这一点ctags,它们突然让我对使用的命令行参数感到悲痛。

另一半是删除我从中删除的用于查看 QML 语法的脚本~/.vim/plugins,这最终解决了我的问题。

无论如何,问题解决了。干杯!

于 2014-01-09T19:24:12.183 回答