仅在案例中缩进语句,仅在vim cindent中没有大括号

时间:2015-04-23 12:13:25

标签: vim case indentation braces

我的cinoptions如下:

:set cinoptions={1s,t0,f0s,g0,i0,(0,=0

它适用于大括号包含的case语句,但不支持unbraced:

switch(foo)
  {
  case(0):
    {
    ...
    break;
    }
   case(1):
   ... <-- should be indented
   break;
  }

我需要所有代码的{1s需要像这样格式化,如果我放弃= 0我得到这个。

switch(foo)
  {
  case(0):
      {
      ...     <-- should not be idented so much
      break;
      }
   case(1):
     ... 
   break;
  }

有没有办法指定vim不以任何特殊方式缩进大小写?

1 个答案:

答案 0 :(得分:0)

最后用自己的内部缩进法完成了它:

function Indent(line)
    " Store current pos
    let l:indent = cindent(a:line)
    let l:lineprec = a:line - 1
    let l:linefirst = split(getline(a:line), " ")[0]
    if l:linefirst ==# "{"
      let l:case = split(getline(l:lineprec), " ")[0]
      if l:case ==# "case"
        let l:indent = indent(l:lineprec) + &shiftwidth
      endif
    endif
    return l:indent
endfunction

添加.vimrc:

:set indentexpr=Indent(line(\".\"))

它有点特定于我的编码风格(案例必须后面跟一个空格)