JavaScript语法和Vim中的缩进

时间:2011-10-05 00:06:35

标签: javascript vim

我知道之前已经问过这个问题,但是我无法让JavaScript缩进在Vim中正常工作。

我尝试安装此插件:

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

我得到了这种行为:

if (x == 1) {
alert("nice");
}

这是我的vimrc:

syntax on
set background=light
colorscheme solarized
set tabstop=4
filetype plugin indent on
let g:solarized_termcolors=16

我也试过这个插件:

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

但是这给了我这个:

if (x == 1) {
        alert("nice");
}

,即两个标签,我只希望它通过一个标签缩进。

任何人都有任何想法在这做什么?

3 个答案:

答案 0 :(得分:6)

我是从谷歌来到这里的,并且如上所述对Yi Zhao的缩进文件不满意。仍然没有抓住我的一些嵌套函数。

我在推特上询问并建议https://github.com/pangloss/vim-javascript - 我很高兴。

HTH,

答案 1 :(得分:4)

您是否在.vimrc

中尝试过此操作
set smarttab
set cindent

编辑我用于VIM的JavaScript“插件”是javascript.vim,它取代了默认的VIM javascript语法文件。

无论您使用哪种插件,VIM中的缩进通常都非常糟糕,并且是VIM用户的常见抱怨,尤其是JavaScript。没有完美的解决方案,考虑到VIM的强大可扩展性,这很奇怪。

答案 2 :(得分:4)

Vim wiki解释了如何设置特定于文件类型的缩进,而且非常简单:http://vim.wikia.com/wiki/Indenting_source_code#Different_settings_for_different_file_types

最简单的方法是在autocmd FileType文件中添加.vimrc条指令。您可以分别为每种文件类型指定缩进:

autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
autocmd FileType html       setlocal shiftwidth=2 tabstop=2
autocmd FileType python     setlocal shiftwidth=4 softtabstop=4 expandtab

或为所有文件类型设置默认缩进,并为特定文件类型覆盖它:

set tabstop=4
set shiftwidth=4

autocmd FileType javascript setlocal shiftwidth=2 tabstop=2                                                   
autocmd FileType html setlocal shiftwidth=2 tabstop=2