如何在extern中设置vim非自动缩进;";{行
在我们的项目中,将有如何在extern中设置vim非自动缩进;";{行,vim,Vim,在我们的项目中,将有 #ifdef __cplusplus extern "C" { #endif int foobar(); // <-- vim auto indent it \ifdef\uuucplusplus 外部“C”{ #恩迪夫 int foobar();//通过“cinoptions”配置的vim中的缩进。但它不支持“extern C”。请参阅 将此另存为~/.vim/indent/cpp.vim我发现extern“C”{/}对我有效。不确定这是否取决于任何特定
#ifdef __cplusplus
extern "C" {
#endif
int foobar(); // <-- vim auto indent it
\ifdef\uuucplusplus
外部“C”{
#恩迪夫
int foobar();//通过“cinoptions”配置的vim中的缩进。但它不支持“extern C”。请参阅
将此另存为~/.vim/indent/cpp.vim我发现extern“C”{/}
对我有效。不确定这是否取决于任何特定的
cindent
或cino
设置。我认为vim中的缩进是基于正则表达式的,但不是语法,vim没有那么智能。如果用它工作,我在vim 8.1上就不工作了
function! IndentNamespace()
let l:cline_num = line('.')
let l:pline_num = prevnonblank(l:cline_num - 1)
let l:pline = getline(l:pline_num)
let l:retv = cindent('.')
while l:pline =~# '\(^\s*{\s*\|^\s*//\|^\s*/\*\|\*/\s*$\)'
let l:pline_num = prevnonblank(l:pline_num - 1)
let l:pline = getline(l:pline_num)
endwhile
if l:pline =~# '^\s*extern "C".*'
let l:retv = 0
endif
return l:retv
endfunction
setlocal indentexpr=IndentNamespace()