调整Vim中的格式规则

时间:2012-03-24 17:10:43

标签: vim formatting

我不是Vim noob,但我也不是职业选手。如果我有一段,在这种情况下javascript,代码如此

function foo(a,b,c,d) {
if (one||two) {
if (rhyme||reason) {
return true;
}
return false;
}
}

我格式化它(gg=G),我得到以下代码:

function foo(a,b,c,d) {
   if (one||two) {
      if (rhyme||reason) {
         return true;
      }
      return false;
   }
}

这在美学上更令人愉悦。但是,如果相反我想要下面的内容(或者如果我想将上述结果转换为以下结果):

function foo( a, b, c, d ) 
{
   if ( one || two ) 
   {
      if ( rhyme || reason ) 
      {
         return true;
      }
      return false;
   }
}

有没有办法指示Vim如何解析代码?我可以使用正则表达式的hack来查找parantheses和pad空格,但是当一个人也考虑所有运算符(!,%,*,-,+,=,/

时它会崩溃

2 个答案:

答案 0 :(得分:5)

几条不同的评论:

  • =运算符仅处理缩进;除非用:set equalprg=foo覆盖其行为。它不会改变每一行的内容。请参阅:help =

  • gq运算符将跨行重新格式化文本。默认情况下,它使用内部格式化程序,它接受通过:set formatoptions设置的选项(请参阅:help fo:help fo-table)。如果您知道将以您希望的方式重新格式化代码的外部工具,则可以设置formatexpr(每个缓冲区)或formatprg(全局)以在执行gq时调用该程序。见:help gq。使用此代替gg=G只会变为gggqG

  • vim网站here上有一个Javascript美化插件。我没用过它。它只是vimscript,所以如果你想要按照你想要的方式进行破解,那么你可以使用它。

答案 1 :(得分:4)

试试这个vim插件:https://github.com/Chiel92/vim-autoformat

按一下按钮,就完成了。 它使用gq并设置外部格式程序,以便正确使用它。

所以基本上,如果你和einars js-beautify一起安装这个插件,它可以开箱即用javascript格式化。