在Vim中,如何防止HTML标记的自动缩进,但是为Javascript的部分维护?

时间:2012-07-03 03:49:37

标签: javascript html vim

基本上当我编辑.HTML文件时,我不希望Vim缩进HTML标记,但我确实希望它缩进Javascript代码。

我想阻止这一点:

<table>
    <tr>
        <td>

当我点击输入时,我希望HTML只是在下一行的开头:

<table>
<tr>
<td>

但我希望Vim继续为Javascript做这个:

function fooBar() {
    var myVar = 10;    
}

我目前在.gvimrc中有这一行:

filetype plugin indent on

我是否可以有选择地仅针对HTML标记禁用Vim的缩进?当我对谷歌进行研究时,我最终得到了关于禁用粘贴代码的缩进的教程。

2 个答案:

答案 0 :(得分:1)

我认为仅仅做set filetype=javascript就足够了。但是你应该把你的JavaScript放在单独的* .js文件中。

答案 1 :(得分:0)

试试这个:

set indentexpr=|set cindent

我相信它应该具有您正在寻找的效果,它不会基于html标签进行缩进,但它仍然会在打开花括号之后缩进,并且它会保留html语法高亮显示。要使此永久化,您可以在vimrc中使用自动命令,如au BufEnter *.html set indentexpr=|set cindent

有4个级别的缩进。它们按从低到高的顺序排列autoindentsmartindentcindentindentexpr。因此,您需要做的就是确保未设置indentexpr,然后您可以设置cindentcindent默认情况下使用字符{,},),:,#进行缩进,因此它会缩进大括号之类的内容,而不会缩进html。