我的 vim 不断纠正前几行的缩进?

My vim keeps correcting indents of previous lines?

当我编辑 HTML 时,我有时喜欢这样 line-up 属性声明:

<li class="dropdown"
    ui-route="..."
    ng-class="{active: $uiRoute}">
</li>

但是,当我在示例的第 2 行末尾输入换行符时,vim 似乎将第 2 行的缩进更正为第 1 行的缩进。这是它的 GIF发生:

我打开了 autoindent,但禁用它似乎没有帮助。

我可以告诉 vim 停止这样做吗?

这是因为您设置了 filetype indent on 并且加载了缩进文件:xml.vim

如果您将文件重命名为 foo.vim.txtvim foo.vim.txt 之类的名称,当您按 Enter 时缩进不会自动调整。

更详细的信息:

在你$VIMRUNTIME/indent/xml.vim中,你可以找到:

setlocal indentkeys=o,O,*<Return>,<>>,<<>,/,{,}

也就是说,当您在 xml 文件中按下 <Return> 时,会触发缩进调整。阅读 :h indentkeys 了解详情。

如果您不想让 vim 在您按下 <enter> 时重新缩进您的行,您可以尝试 setlocal indentkeys -=*<Return>。如果你希望它只发生在特定的文件类型上,即 xml,你可以创建自动命令。

希望对您有所帮助。

P.S。我刚刚发现你的文件可能是 html 文件,是一样的。您可以检查 $VIMRUNTIME/indent/html.vim,您会看到 <Enter> 也在列表中。