vim

时间:2017-01-31 12:36:03

标签: vim indentation

我目前正在进入一个新项目,其中缩进样式有点特殊。基本规则是使用'keyword + blank'空格来缩进下一行。

例如:

if () {
   // indent 3 spaces here
}

while () {
      // indent 6 spaces here
}

有一些(或很多)的遗嘱:

  • else if:使用相同数量的空格,如果(3)
  • 案例在开关/案例(2个空格)
  • ...

1)是否已经有一个可以为我做的插件?根据其中一位开发人员的说法,这被称为“智能识别”。不幸的是,VIM的聪明才智做了不同的事情。

2)如果1的答案是否定的。是否有一种简单的方法来配置vim以遵守这些规则?

1 个答案:

答案 0 :(得分:1)

我不知道有任何这样的插件,恕我直言这个方案除了智能之外什么都没有。

但是,完全可以编写一个自定义缩进插件来实现您拥有的确切要求。见:help 'indentexpr';另外,Vim在$VIMRUNTIME/indent/*.vim中附带了几个可以作为灵感的缩进插件。

基本上,算法是这样的:

  • 检查其中一个关键字(ifwhile等)的上一行。
  • 如果匹配,请计算偏移并将其添加到上一行的缩进(indent(v:lnum - 1));否则,按原样使用上一行的缩进。
  • 如果该行包含},请找到匹配{的行,并使用该行的缩进。