如何在extern“C”{line中设置vim not auto indent

时间:2014-09-16 03:26:13

标签: vim

在我们的项目中,将有

#ifdef __cplusplus
extern "C" {
#endif
    int foobar();  // <-- vim auto indent it

如何设置vimrc或c-support让vim不自动缩进只是为了extern“C”旁边使用Marco替换extern“C”{?

2 个答案:

答案 0 :(得分:0)

vim中的缩进通过'cinoptions'配置。但它不支持“extern C”。见answer on similar question

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()

将此保存为〜/ .vim / indent / cpp.vim

答案 1 :(得分:0)

我发现extern "C" { //}对我有用。不知道这是否取决于任何具体 cindentcino设置。