1

我的 cinoptions 如下:

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

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

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 不以任何特殊方式缩进大小写?

4

1 回答 1

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(\".\"))

这有点特定于我的编码风格(大小写必须后跟空格)

于 2015-07-01T08:55:28.823 回答