Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim:自动格式化长单行_Vim_Formatting_Code Formatting - Fatal编程技术网

Vim:自动格式化长单行

Vim:自动格式化长单行,vim,formatting,code-formatting,Vim,Formatting,Code Formatting,我有一个写为一行的JavaScript代码,我想重新格式化,使每个语句都写在一行中。使用Vim可能吗?我尝试了gqq和==命令,但它们不起作用。首先使用regexp重新格式化可能会更容易: :%s/;/\r/gc :%s/}/}\r/gc :%s/{/{\r/gc 等 在后面插入换行符;或{} (如果您有足够的信心或文件太长,请不要使用c它将要求确认每个匹配) 将文件拆分到不同的行后,可以使用gg=G获得正确的缩进 据我所知,用gq或=在多行上拆分一行是不可能的,最好将这些操作放到一个函数中,使

我有一个写为一行的JavaScript代码,我想重新格式化,使每个语句都写在一行中。使用Vim可能吗?我尝试了gqq和==命令,但它们不起作用。

首先使用regexp重新格式化可能会更容易:

:%s/;/\r/gc

:%s/}/}\r/gc

:%s/{/{\r/gc

在后面插入换行符;或{}

(如果您有足够的信心或文件太长,请不要使用
c
它将要求确认每个匹配)

将文件拆分到不同的行后,可以使用
gg=G
获得正确的缩进


据我所知,用gq或=

在多行上拆分一行是不可能的,最好将这些操作放到一个函数中,使 这项工作更简单

function! FormatJavaScript()   
    :%s/;/;\r/gc
    :%s/}/}\r/gc
    :%s/{/{\r/gc
endfun
map <F2> <esc>:call FormatJavaScript()<cr>
function!FormatJavaScript()
:%s/;/;\r/gc
:%s/}/}\r/gc
:%s/{/{\r/gc
结束
映射:调用FormatJavaScript()

函数的进一步改进是设置一个间隙,使函数作用于它,而不是作用于整个文件,现在不记得了。我来看看“help command”,有人能帮忙吗?

有一个vim插件,可以从vim中对代码进行格式化(只需按下一个按钮).它称为vim自动格式化,您可以在此处下载:

它将外部代码格式化程序集成到vim中。 例如,如果你想格式化javascript代码,你只需要安装程序js beautifier(在repo中有解释),一切都可以运行,而不需要配置任何东西。

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