调整Vim中的格式规则

puk*_*puk 4 vim formatting

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

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

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

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

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

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

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

Dav*_*ope 5

几个不同的评论:

  • =运营商只处理压痕; 除非你用它覆盖它的行为:set equalprg=foo.它不会改变每一行的内容.见:help =.

  • gq运营商将重新格式化整个行文字.默认情况下,它使用其内部格式化程序,它接受通过:set formatoptions(参见:help fo:help fo-table)设置的选项.如果您知道将以您希望的方式重新格式化代码的外部工具,则可以设置formatexpr(按缓冲区)或formatprg(全局)调用该程序gq.见:help gq.使用它而不是gg=G变成gggqG.

  • 有在现场VIM一个Javascript美化插件这里.我没用过它.它只是vimscript,所以如果你想破解它以你想要的方式格式化事物,那么你可以使用它.