繁体   English   中英

在Vim中缩进Javascript-函数中Lambda函数的问题

[英]Indenting Javascript in Vim - Problems with Lambda Functions in Functions

我在vim中使用javascript缩进有问题。 一切工作都很好,除了将内联函数作为函数的参数缩进不起作用。 这是一个纯JavaScript的问题(没有涉及html)。

someFunc(function() {
    if(foo) {
        bar;
    } else {
        bar;
    }
});

缩进

someFunc(function() { 
        if(foo) { 
        bar; 
        } else { 
        bar; 
        } 
        });

你有同样的问题吗? 我该如何解决? 我尝试了vim.org上的一些脚本,但是它们似乎也有同样的问题。

模拟TextMates javascript缩进功能的脚本将是完美的。

您可能在JavaScript中使用“ cindent” 您可以尝试使用“ smartindent”代替。

从文档中, 'smartindent'作用是:

在开始新行时执行智能自动缩进。 适用于类似C的程序,但也可以用于其他语言。 'cindent'可以做这样的事情,在大多数情况下效果更好,但更严格...

您可以通过以下方式切换到smartindent:

set nocindent smartindent

我已经对您的代码进行了测试,并按您的预期进行缩进。

另请参见: 缩进源代码-Vim提示Wiki

Vim内置的用于评估javascript缩进的表达式非常糟糕。 您可以通过安装Better Javascript Indentation插件来修复它,或者如果您希望将插件安装为git子模块,则可以在github上获取源代码 安装此插件将减轻痛苦。 每次在一行JavaScript的末尾按回车键时,都应使用正确的缩进级别定位光标。 另外,您还可以使用=命令自动缩进您的javascript。 安装该插件-您会想知道没有它会怎样。

我相信这个问题的答案是从您的.vimrc中删除所有cindent / smartindent / autoindent并改用文件类型的缩进(“ set no *”行不是必需的,只不过是书呆子)。

set nocindent
set nosmartindent
set noautoindent
filetype indent on

我遇到了同样的问题,这就是使vim表现出来的原因。 当将它们输入HTML样式标签时,这也阻止了vim在冒号(:)上“不缩进” CSS规则,这是我的另一项烦恼。

如果您打开/保存带有* .js扩展名的文件,vim应该设置正确的缩进规则,但是如果您开始编辑新的(未保存)文件,则可能需要显式设置“:set filetype = javascript”。

vim的缩进并不可怕,只是被误解了。 对于使用它的许多程序员,很难相信默认的缩进规则确实如此糟糕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM