微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于VIM中switch / case语句中的范围的cindent缩进问题

我目前在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语句不再起作用.以前,autoindent会将所有预处理程序指令对齐到第0列,即:

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

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

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

当我使用大括号围绕个别情况时,有没有办法保留现有的对齐方式,并且对于不使用大括号的情况也有类似的对齐方式?

谢谢.

解决方法

最后,我改变了一些环境变量并修复了所有内容,尽管使用了相同的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命令后我注意到了这一点,他们突然对我使用的命令行参数感到悲伤.

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

在任何情况下,问题都已解决.干杯!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐