如何修复Vim中不正确的内联Javascript缩进?

我似乎无法在Vim中正确地内联JavaScript缩进。 考虑以下:

$(document).ready(function() { // Closing brace correctly indented $("input").focus(function() { $(this).closest("li").addClass("cur-focus"); }); // <-- I had to manually unindent this // Closing brace incorrectly indented $("input").blur(function() { $(this).closest("li").removeClass("cur-focus"); }); // <-- This is what it does by default. Argh! }); 

Vim似乎坚持自动缩进第二种情况下显示的右大括号。 如果我重新缩进整个文件,它也是这样。 如何使用第一种情况下看到的更标准的JS缩进样式来自动缩进?

Preston Koprivica提供的最全面和无缺陷的Javascript缩进脚本。 在所提出的答案中的所谓的OOP脚本具有严重的错误,并且不能正确地缩进具有方括号的代码。

使用JavaScript缩进: Preston Koprivica的Javascript压缩(包含HTML缩进) 。 感谢寡头们的提醒 – 给他一个投票权。

上面提到的脚本不能正确地格式化jQuery常用的闭包语法:

 $(function() { // only one level of indentation, not two }); 

这个脚本对我更好: http : //www.vim.org/scripts/script.php?script_id=2765

这些答案大部分都是从2009年开始的,坦率地说,已经过时了。

vim-javascript 比普雷斯顿的脚本更近,更新。

如果你还没有开始使用Vundle ,那么安装有点复杂,但是它似乎并没有受到替代scheme的影响。

也许这些设置的组合应该在你的VIMRC文件中。

 syntax on set syn=auto set showmatch filetype on filetype plugin on filetype indent on set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab 

我有同样的问题。 这是所有Javascript缩进脚本中最好的:

http://www.vim.org/scripts/script.php?script_id=1840

它需要IndentAnything插件

http://www.vim.org/scripts/script.php?script_id=1839

作为一个额外的好处,我写了这个缩进脚本,将使JavaScript块相当漂亮。 它默认使用默认的html压缩器(当在一个Javascript模块中时使用IndentAnything)

http://gist.github.com/371902

如果有人来到这里,请注意vim-javascripthttps://github.com/pangloss/vim-javascript上的;pangloss帮助了我,例如Vim 7.4。 而来自寡头和Charles Roper的上述解决scheme并没有。

假设语法文件对于java脚本具有良好的缩进,则直观地突出显示该块并按=。 这适用于java,所以我期望它为java脚本做一些体面的事情。 结果可能还取决于tabstop,expandtab和shiftwidth的设置。

gq也很有用,它格式化线条而不是缩进它们。