首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么vim自动缩进不一致?

为什么vim自动缩进不一致?
EN

Stack Overflow用户
提问于 2020-04-21 08:33:51
回答 1查看 39关注 0票数 0

在Macintosh上使用vim 8.0.1365

我不明白为什么自动缩进有时会失败。

当我运行格式化程序时,下面的两个代码片段都按照我希望的那样缩进(默认缩进和pangloss缩进)。但是当我处于插入模式时,自动缩进不适用于第二个代码片段。

所以像这样的代码会像我希望的那样自动缩进;

代码语言:javascript
复制
function SayHiToMom () {
    message = "Hello, best mom in the world";   <- This line auto-indents, as expected.
    send(message);                              <- and so does this one.
}

但不是这段代码

代码语言:javascript
复制
 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.
EN

回答 1

Stack Overflow用户

发布于 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

代码语言:javascript
复制
au FileType javascript setl indentexpr=

在这种情况下,您将获得默认的autoindent行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61334226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档