假设我有以下文件:temp.html
正确缩进,它看起来像这样:
<html>
<head>
</head>
<body>
<script type="text/javascript>
function blahblahblah(...) {
doSomething();
}
function something else() {
etc...;
}
</script>
</body>
</html>
然而,当我输入gg = G时,我会得到这样的结果:
<html>
<head>
</head>
<body>
<script type="text/javascript>
function blahblahblah(...) {
doSomething();
}
function something else() {
etc...;
}
</script>
</body>
</html>
因为,我的javascript缩进搞砸了。我的.vimrc中有filetype plugin indent on
,它似乎适用于我的HTML。但是,我的代码的javascript部分没有正确缩进。如何使用vim正确缩进包含多种语言代码的文件?
答案 0 :(得分:1)
缩进混合文件类型永远不会在Vim中正常工作,除非您使用更适合该任务的(通常是语言特定的)外部程序。
我建议js-beautify可以在HTML中格式化JavaScript。
这是我用来格式化纯JS的命令(把它放在~/.vim/after/ftplugin/javascript.vim
中):
command! -buffer -range=% Format let b:winview = winsaveview() |
\ execute <line1> . "," . <line2> . "!js-beautify -f - -j -B -s " . &shiftwidth |
\ call winrestview(b:winview)
这是我用于格式化HTML的命令,可选择嵌入式JS(将其放在~/.vim/after/ftplugin/html.vim
中):
command! -buffer -range=% Format let b:winview = winsaveview() |
\ execute <line1> . "," . <line2> . "!html-beautify -f - -I -s " . &shiftwidth |
\ call winrestview(b:winview)
这些命令的工作方式相同:
:Format " formats the whole buffer
:5,23Format " formats lines 5 to 23
:'<,'>Format " formats the visually selected lines