我似乎无法在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缩进样式自动缩进?
答案 0 :(得分:85)
最全面且无错误的Javascript缩进脚本是the one by Preston Koprivica。 建议答案中所谓的OOP脚本存在严重错误,并且没有正确缩进具有方括号的代码。
答案 1 :(得分:82)
使用Preston Koprivica的JavaScript Indent: Javascript indenter (HTML indent is included)。感谢oligofren的单挑 - 给他一个投票。
答案 2 :(得分:17)
上面提到的脚本没有正确地格式化jQuery中经常使用的闭包语法:
$(function() {
// only one level of indentation, not two
});
这个脚本对我来说效果更好:http://www.vim.org/scripts/script.php?script_id=2765
答案 3 :(得分:10)
这些答案大多来自2009年,坦白说,已经过时了。
vim-javascript比Preston's script.
更新近,更新如果你还没有开始使用Vundle,安装会有点复杂,但它似乎没有替代方案的问题。
答案 4 :(得分:7)
这些设置的某些组合应该在您的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
答案 5 :(得分:3)
我有同样的问题。这是所有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)
答案 6 :(得分:2)
如果有人来这里,请注意vim-javascript
pangloss
{{1}} https://github.com/pangloss/vim-javascript帮我到目前为止,即Vim 7.4。而oligofren和Charles Roper的上述解决方案则没有。
答案 7 :(得分:0)
假设语法文件对java脚本具有良好的缩进,请在视觉上突出显示该块并按=。这适用于java,所以我希望它能为java脚本做一些不错的事情。结果可能还取决于tabstop,expandtab和shiftwidth的设置。
gq也很有用,它可以格式化行而不是缩进行。
答案 8 :(得分:0)
您不必安装专门针对Javascript的插件,可以了解内置的Vim缩进选项。 Vim有很多选择,cindent
,smartindent
和indentexpr
之类的缩进样式都有自己的选择。
要检查您使用的是cindent
还是smartindent
或indentexpr
,请运行:
:set cindent?
:set smartindent?
:set indentexpr?
尽管名称cindent
不仅适用于C程序,它还可以适用于一堆具有大致相同语法的编程语言,包括Javascript。请查看:help C-indenting
以获得有关此文档的文档。您可以特别用这样的一行来调整设置,请参见:help 'cinoptions'
和:help cinoptions-values
。这是一个示例配置:
:au FileType js,javascript setlocal shiftwidth=2 softtabstop=2 cinoptions=j1,J1,(1s " see help cino-j cino-J cino-(