我在vim中有javascript缩进问题。 一切都很好,除了内联函数的缩进作为函数的参数不起作用。 这是一个仅限javascript的问题(没有html调用)。
实施例
someFunc(function() {
if(foo) {
bar;
} else {
bar;
}
});
缩进
someFunc(function() {
if(foo) {
bar;
} else {
bar;
}
});
你有同样的问题吗? 我该如何解决这个问题? 我从vim.org尝试了一些脚本,但它们似乎有同样的问题。
模拟TextMates javascript缩进功能的脚本将是完美的。
答案 0 :(得分:3)
您可能正在使用JavaScript 'cindent'。您可以尝试使用'smartindent'。
从文档中,'smartindent'
的作用是:
开始新线时执行智能自动延迟。适用于C类 程序,但也可以用于其他语言。 'cindent'确实如此 像这样的东西,在大多数情况下效果更好,但更严格......
您可以通过以下方式切换到smartindent:
set nocindent smartindent
我使用上面的代码进行了测试,并按预期进行缩进。
答案 1 :(得分:3)
Vim用于评估javascript缩进的内置表达式非常糟糕。您可以通过安装Better Javascript Indentation plugin来修复此问题,或者如果您愿意source on github,则可以获取install your plugins as git submodules。安装此插件将减轻痛苦。每次在JavaScript行末尾按回车键时,光标应按正确的缩进级别定位。此外,您将能够使用=
命令自动缩进您的JavaScript。安装插件 - 你会想知道没有它你是如何得到的。
答案 2 :(得分:1)
我相信这个问题的答案是从.vimrc中删除任何cindent / smartindent / autoindent并改为使用filetype indent(“set no *”行不是必需的,只是迂腐)。
set nocindent
set nosmartindent
set noautoindent
filetype indent on
我遇到了同样的问题,这就是让vim行为的原因。这也阻止了vim在冒号(:)中将“unindenting”CSS规则输入到HTML样式标签中,这是我的另一个宠儿。
如果您打开/保存扩展名为* .js的文件,vim应设置正确的缩进规则,但如果您开始编辑新的(未保存的)文件,则可能需要显式设置“:set filetype = javascript”。 / p> vim的缩进并不可怕,只是被误解了。对于那些使用它的程序员来说,很难相信默认的缩进规则真的很糟糕。