VIM中的Javascript缩进

Bri*_*unt 15 javascript vim indentation auto-indent

我试图让VIM使用'='和相关命令缩进Javascript.当我尝试自动缩进以下内容时,例如:

   new function($) {
     $.fn.setCursorPosition = function(pos) { 
       if ($(this).setSelectionRange) {
         $(this).setSelectionRange(pos, pos);
       } else if ($(this).createTextRange) {
         var range = $(this).createTextRange();
         range.collapse(true);
         range.moveEnd('character', pos);
         range.moveStart('character', pos);
         range.select();
       }
Run Code Online (Sandbox Code Playgroud)

结果是相当荒谬的:

       new function($) {
       $.fn.setCursorPosition = function(pos) {
       if ($(this).setSelectionRange) {
       $(this).setSelectionRange(pos, pos);
       } else if ($(this).createTextRange) {
       var range = $(this).createTextRange();
       range.collapse(true);
       range.moveEnd('character', pos);
       range.moveStart('character', pos);
       range.select();
       }
Run Code Online (Sandbox Code Playgroud)

我已经设定了set syntax=javascript,我已经设定filetype为:

filetype detection:ON  plugin:ON  indent:ON
Run Code Online (Sandbox Code Playgroud)

虽然我已经尝试了每一种排列.我已经尝试了smartindent,autoindentcindent,但似乎没有任何东西给Vim预期的缩进的正确效果.我已经定了tabstop=4.

我安装了javascript.vim,IndentAnything虽然它们似乎没有任何影响.

我非常感谢有关如何在JavaScript中正确缩进Vim的任何建议.

Dea*_*ean 10

哦,伙计,我花了几个小时搞清楚同样的问题.

如果你有filetype indent on(你这样做),那么某个文件可能会设置一些不同的缩进设置.如果使用,verbose set <option>?您可以看到它的设置位置以及设置的位置:

:verbose set autoindent?
:verbose set cindent?
:verbose set smartindent?
:verbose set indentexpr?
Run Code Online (Sandbox Code Playgroud)

默认情况下,您只希望看到cindent默认缩进文件设置:

cindent
Last set from $VIMRUNTIME/indent/javascript.vim
Run Code Online (Sandbox Code Playgroud)

$VIMRUNTIME你跑步的路径在哪里:echo $VIMRUNTIME.

除非你启用它们(在你的vimrc或插件中),否则不会设置所有其他的.

对我来说,我有一个插件(eclim)正在设置identexpr并导致此问题:

identexpr=EclimGetJavascriptIndent(V:lnum)
Last set from ~/.vim/bundle/eclim/indent/javascript.vim
Run Code Online (Sandbox Code Playgroud)


小智 5

我前段时间遇到同样的问题,解决方法是插件"vim-javascript".它是vim的JavaScript包,提供语法和缩进插件.

https://github.com/pangloss/vim-javascript

安装非常简单.

如果您正在使用病原体,请使用以下步骤:

  cd ~/.vim/bundle
  git clone https://github.com/pangloss/vim-javascript.git
Run Code Online (Sandbox Code Playgroud)

如果您使用的是vundle,请使用以下步骤:

将以下行添加到vimrc文件中:

Plugin "pangloss/vim-javascript"
Run Code Online (Sandbox Code Playgroud)

并安装它:

:so ~/.vimrc
:PluginInstall
Run Code Online (Sandbox Code Playgroud)


sle*_*ate 4

添加两个右大括号并选择整个块,vi{在没有插件的 gvim 7.2 中为我提供了正确的自动缩进。--noplugins您可能想通过使用命令行上的标志启动 vim 来查看是否有错误的插件搞砸了。然后再试一次。