我不是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空格,但是当一个人也考虑所有的运算符时它会崩溃(!,%,*,-,+,=,/)
几个不同的评论:
该=运营商只处理压痕; 除非你用它覆盖它的行为:set equalprg=foo.它不会改变每一行的内容.见:help =.
该gq运营商将重新格式化整个行文字.默认情况下,它使用其内部格式化程序,它接受通过:set formatoptions(参见:help fo和:help fo-table)设置的选项.如果您知道将以您希望的方式重新格式化代码的外部工具,则可以设置formatexpr(按缓冲区)或formatprg(全局)调用该程序gq.见:help gq.使用它而不是gg=G变成gggqG.
有在现场VIM一个Javascript美化插件这里.我没用过它.它只是vimscript,所以如果你想破解它以你想要的方式格式化事物,那么你可以使用它.