在Macintosh上使用vim 8.0.1365
我不明白为什么自动缩进有时会失败。
当我运行格式化程序时,下面的两个代码片段都按照我希望的那样缩进(默认缩进和pangloss缩进)。但是当我处于插入模式时,自动缩进不适用于第二个代码片段。
所以像这样的代码会像我希望的那样自动缩进;
function SayHiToMom () {
message = "Hello, best mom in the world"; <- This line auto-indents, as expected.
send(message); <- and so does this one.
}但不是这段代码
var svg = d3.select("#chart-area").append("svg")
.attr("width", 400) <- Here, no auto-indent occurs, but that's not really a surprise. I indent by hand.
.attr("height", 400) <- When I start a new line here, no auto-indent occurs, surprising and annoying.发布于 2020-04-22 11:48:11
如果您启用了文件类型支持,则当您加载特定类型的文件(如JavaScript)并且该文件包含多个设置时,Vim会加载一个文件类型插件。对于JavaScript,其中一个设置是indentexpr,它是一个被调用来自动提供正确缩进的函数。
似乎在这种情况下,它不会自动处理这种情况,可能是因为在代码中没有人考虑过这种情况。Vim本身并不能理解JavaScript,所以Vimscript必须尽其所能。
此外,也有可能有人没有这样做,因为如果有人使用JavaScript样式,而不是在末尾写分号,而是在必要时将分号放在行首,那么您的行本质上不会被视为连续行。Vim必须支持这两种风格的JavaScript,即使不是每个人都同意这两种方式都是好主意。
无论如何,文件头(在我的系统上是/usr/share/vim/vim82/indent/javascript.vim)包含一个GitHub URL,您可以在其中报告此问题,并发送补丁或查看其他人是否愿意编写补丁。您还可以通过在.vimrc中编写类似以下内容来关闭indentexpr值
au FileType javascript setl indentexpr=在这种情况下,您将获得默认的autoindent行为。
https://stackoverflow.com/questions/61334226
复制相似问题