Vim:自动格式化长单行

6

我有一段JavaScript代码,它是一行写的,我想重新格式化它,使每个语句都写在一行上。使用Vim是否可能实现这一点?我尝试了gqq和==命令,但它们没有起作用。

3个回答

7

使用正则表达式重新格式化可能更容易:

:%s/;/;\r/gc
:%s/}/}\r/gc
:%s/{/{\r/gc
等等

在分号或左花括号后插入换行符。

(如果你足够自信或者文件太长,不要使用c,因为它会为每个匹配项询问确认)

一旦文件被拆分成不同的行,你可以使用gg=G来获得正确的缩进。

据我所知,使用gq或=无法将一行分割成多行。


1
:%s/\([;}{]\)/\1\r/gc 更方便。 - zsrkmyn

3
有一个vim插件可以让你在vim中轻松地对代码进行格式化(只需按一个按钮)。它叫做vim-autoformat,你可以在此处下载:https://github.com/vim-autoformat/vim-autoformat。它将外部的代码格式化程序集成到了vim中。例如,如果你想要格式化javascript代码,你只需要安装js-beautifier程序(在仓库中有说明),一切都会自动运行,无需配置任何内容。

0

把这些操作放进一个函数里会更好,让工作变得更简单。

function! FormatJavaScript()   
    :%s/;/;\r/gc
    :%s/}/}\r/gc
    :%s/{/{\r/gc
endfun
map <F2> <esc>:call FormatJavaScript()<cr>

进一步改进函数的方法是加入一个间隔,这样函数就只对其进行操作,而不是对整个文件进行操作,目前还没有想到如何实现。我会查看“帮助命令”,有人能帮忙吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接