我正在使用Vim编辑Erlang代码。习惯于(大多数Erlang程序员都这样做)根据括号范围缩进Erlang代码。例如,C的缩进通常在花括号内缩进一个制表位:
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}])).
上面的例子缩进是为了说明重点,并非主观美感考虑。
如果代码块开始于新一行,制表符宽度将被使用:
?assertError(
{bad_options, [{foo, bar}, bad_option]},
lhttpc:request(
"http://localhost/", get, [], <<>>, 1000,
[bad_option, {foo, bar}]
)
).
我 .vimrc 的相关部分:
set expandtab " Spaces for tabs "
set tabstop=4 " Tab width 4 "
set shiftwidth=4
set smarttab
set autoindent
" Enable filetype plugin "
filetype plugin on
filetype indent on
有没有一种在Vim中执行这种缩进的方法,如果有,怎么做?
vimerl
并升级到了最新版本。但是,它仍然会缩进为1(或有时为2,非常奇怪的是)个制表符宽度。 - Adam Lindberg