在Vim中按括号列索引缩进代码?
我正在使用Vim编辑Erlang代码。我习惯(大多数Erlang程序员都这样做)按括号范围缩进Erlang代码。例如,C通常在花括号内缩进一个制表符宽度:在Vim中按括号列索引缩进代码?,vim,erlang,indentation,Vim,Erlang,Indentation,我正在使用Vim编辑Erlang代码。我习惯(大多数Erlang程序员都这样做)按括号范围缩进Erlang代码。例如,C通常在花括号内缩进一个制表符宽度: int main(void) { printf("hello, world\n"); return 0; } 在Erlang中,通常根据括号开始的列缩进: ?assertError({bad_options, [{foo, bar}, bad_option]},
int main(void) {
printf("hello, world\n");
return 0;
}
在Erlang中,通常根据括号开始的列缩进:
?assertError({bad_options, [{foo, bar},
bad_option]},
lhttpc:request("http://localhost/", get, [], <<>>, 1000,
[bad_option, {foo, bar}])).
有没有办法在Vim中执行此缩进,如果有,如何执行?看起来您需要深入研究
cindent
和cinoptions
的黑暗世界。我相信,在vimrc中加入以下内容将部分满足您的需求:
set cindent
set cinoptions+=(0
但问题是这将如何影响其他行为。有关更多信息,请参见帮助选项值。应该可以精确地实现您想要的,但可能需要一些实验
希望这有帮助。vimerl的一个分支实现了“上下文感知缩进”而不是“静态缩进”:
似乎有效,所以我将继续使用它一段时间。您尝试过吗?我意识到我实际上使用的是
vimerl
,并更新到了最新版本。但是没有,它仍然缩进到1(或者有时是2,很奇怪)的标签宽度。看起来有点有希望,但我不知道该使用什么选项。尝试了很多东西,但没有得到任何远程可用的东西。由于Erlang插件有自己的缩进,所以怀疑它也会把事情弄糟。您是否尝试过使用set-cinoptions?
查找Erlang更改设置的值(没有任何更改)?插件是否声称可以改善缩进?如果是这样,可能很难从插件外部进行调整。默认值cinoptions
似乎为空。这个插件似乎做了一些工作,这可能使它很难修复。嗨,@Adam Lindberg。已经一个星期了。你觉得维默尔怎么样?我的要求和你完全一样。谢谢那把叉子好像是根据我的需要缩进的。
set cindent
set cinoptions+=(0