Clo*_*oud 5 c vi vim indentation
我目前在VIM中的C缩进设置中设置了以下内容:
set cinoptions=l1
Run Code Online (Sandbox Code Playgroud)
这允许autoindent自动处理case语句的缩进,因此我自动获得以下类型的对齐:
switch(intForSwitching) {
case 1: {
// Comment
// More comments
break;
}
case 2: {
//Comment
break;
}
default: {
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这只适用于每个案例(在语句之后)用大括号括起来的情况{}.我只在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;
}
Run Code Online (Sandbox Code Playgroud)
此外,ifdef声明不再有效.以前,autoindent会将所有预处理程序指令对齐到第0列,即:
char c;
if (c) {
#ifdef TESTING
printf("%c", c);
#endif
}
Run Code Online (Sandbox Code Playgroud)
现在,它将它与我不想要的代码对齐.即:
char c;
if (c) {
#ifdef TESTING
printf("%c", c);
#endif
}
Run Code Online (Sandbox Code Playgroud)
当我使用大括号围绕个别情况时,有没有办法保留现有的对齐方式,并且对于不使用大括号的情况也有类似的对齐方式?
谢谢.
最后,我更改了一些环境变量并修复了所有内容,尽管使用相同的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}"
Run Code Online (Sandbox Code Playgroud)
现在:
PATH="${MACPORTS_PATH}:${SYSTEM_PATH}:${DEV_PATH}"
Run Code Online (Sandbox Code Playgroud)
我在从 VIM 中发出ctags命令后注意到了这一点,他们突然对所使用的命令行参数让我感到悲伤。
另一半是删除一个用于查看 QML 语法的脚本,我从 中删除了该脚本~/.vim/plugins,这最终解决了我的问题。
无论如何,问题解决了。干杯!