我怎么能让Vim得到这个JS缩进正确

How can I have Vim get this JS indenting right?

本文关键字:JS 缩进 怎么能 Vim      更新时间:2023-09-26

Emacs用户在这里,给Vim一个尝试。:)

我非常喜欢快速击键和整体理念,但是我在使用稍微高级一点的东西时遇到了一些麻烦。我的抱怨之一是缩进(使用=命令)。

查看这个JS片段。这就是Emacs的js2模式缩进它的方式。我喜欢这样:

var MyClass = declare([], {
    constructor: function(params) {
        if(!params) {
            params = {};
        }

Vim就是这样处理它的。他妈的:

       var MyClass = declare([], {
constructor: function(params) {
if(!params) {
params = {};
}

上述结构的所有代码都得到了适当的缩进,但从那里开始就很糟糕。我的代码中到处都有这种构造。我检查了:filetype,把开关都打开了。我试过有插件和没有插件。没有做对。Vim是gVim 7.4,几天前下载的。我已经看到了这个问题,并且显示的代码片段在框外正确缩进。

有谁知道我可以在这里尝试什么吗?谢谢你的建议!

在你的.vimrc:

set  nocompatible " vi is decades old
set expandtab     " use soft tabs set shiftwidth=2  # 2 spaces tabs for JS (?) set softtabstop=2
filetype on 
filetype plugin on 
filetype plugin indent on " auto indent for supported languages (JS included)

要重新格式化所有文件,输入gg=G

gg -> go to top of file
= -> indent 
G -> until the end of the file

我已经是VIM用户> 10年了,我正在使用这个Javascript语法插件。我已经测试了

的缩进

1:新建文件并设置文件类型

:set filetype=javascript

2:粘贴(格式错误的)代码

3:点击gg=G(格式化整个缓冲区)

结果代码看起来不错:

var MyClass = declare([], {
  constructor: function(params) {
    if(!params) {
      params = {};
    }