我有一点JavaScript ......
15 $('.ajax_edit_address').each(function() {
16 $(this).ajaxForm({
17 target: $(this).parents('table.address').find('tr.address_header').children(':first'),
18 success: function(response) {
19 $('input, select, textarea', '.ajax_edit_address').removeClass('updating');
20 }
21 });
22 });
这是按照我喜欢的方式格式化的。但是,假设我刚刚输入了一些东西,我想整理一下。所以我在上面运行Vim代码格式化程序......
=7j
结果是......
15 $('.ajax_edit_address').each(function() {
16 $(this).ajaxForm({
17 target: $(this).parents('table.address').find('tr.address_header').children(':first'),
18 success: function(response) {
19 $('input, select, textarea', '.ajax_edit_address').removeClass('updating');
20 }
21 });
22 });
Vim似乎在函数方面存在问题。
以下是我认为的.vimrc的相关部分......
:set cindent shiftwidth=2
" indent depends on filetype
:filetype indent on
:filetype plugin on
是否还需要安装或配置其他内容来格式化JS代码?
答案 0 :(得分:21)
VIM插件Jsbeautify可以正确处理jQuery。这是在线Jsbeautify的vim插件版本。
答案 1 :(得分:10)
有一个更简单的解决方案,不需要vim插件。
将js-beautify安装到您的系统python:
pip install jsbeautifier
然后将其添加到.vimrc:
autocmd FileType javascript setlocal equalprg=js-beautify\ --stdin
就是这样。
运行:help equalprg
以查看其工作原理。
答案 2 :(得分:8)
我建议使用einars / jsbeautify的CLI版本,您可以在此处找到:https://github.com/einars/js-beautify。 它是www.jsbeautifier.org的离线版本。
使用此插件https://github.com/Chiel92/vim-autoformat只需按一下按钮即可在当前缓冲区上运行格式化程序。
答案 3 :(得分:4)
如果您安装了js-beautify(可用于Python:pip install jsbeautifier
或Node:npm -g install js-beautify
),则可以直接从vim运行它-重新格式化当前文件:
:%!js-beautify
答案 4 :(得分:2)
最大的问题似乎是cindent不承认这种语法:
test({
var b = 2;
});
它会把它变成这个:
test({
var b = 2;
});
如果你处理这种情况我会想象缩进对于jQuery语法来说不会那么糟糕。但这需要您编写自定义的JavaScript缩进文件。此外,您必须编辑html缩进文件,以便不使用带有javascript内容的脚本标记的cindent。
我认为没有人为javascript成功创建了jquery / prototype兼容的缩进文件。现有的javascript缩进脚本都存在缺陷。
答案 5 :(得分:0)
不幸的是,'cindent'只是不能完成这项工作,因为它与C语法密切相关。由于javascript的所有默认缩进脚本都打开了'cindent',这没什么帮助。它甚至在剧本中也是如此!
“维护者:没有!想改进这个吗?
除了非常基本的JavaScript之外我什么都不做,所以我从来没有想过要找更好的东西。从vim.org快速浏览一下,this script看起来可能值得一试。它更新,所以它可能会考虑到现在使用的更复杂的JavaScript。
答案 6 :(得分:0)
另一种不需要在vim中进行任何配置的替代方法是在保存时手动运行format命令,例如:
:w !js-beautify --stdin >%
通过这种方式保存后,vim
编辑器将要求您重新加载当前文件内容:
W12: Warning: File "src/static/js/main.js" has changed and the buffer was changed in Vim as well
See ":help W12" for more info.
[O]K, (L)oad File:
这类似于:w sudo tee %
命令,该命令用于保存未经特权修改的文件。
该命令使用标准输入(STDIN
)并将其写入用作当前文件源的变量文件描述符%
。
PS:当然,您需要安装js-beautify
。
pip install jsbeautifier