我不是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空格,但是当一个人也考虑所有运算符(!,%,*,-,+,=,/
)
答案 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格式化。