输入后的Vim标签间距(新行)

时间:2013-07-29 04:38:50

标签: vim

我有这个标签间距配置:

set autoindent
set smartindent
set expandtab tabstop=4 shiftwidth=4 smarttab softtabstop=4

在配置结束时,我把它放在:

autocmd FileType javascript,jade,json set shiftwidth=2 tabstop=2 softtabstop=2

2个空格标签工作得很好。但是,如果我输入enter(新行),它就变成了4个空格。这是一个例子:


     var Post = orm.define('Post', {       
       title: sequelize.STRING,      
       content: sequelize.STRING,
         | /* wrong spaces */
     });

但如果我使用4个制表符空格,则在输入后也会使用4个空格。

我无法弄清楚问题是什么。

编辑:

只有当我在javascript回调函数中编写object-literal时才会发生这种情况(如上面的代码示例)。它适用于通用代码语句和json object-literal。这是一个例子:


    /* the 2 spaces works fine*/
    app.set('port', 3000);
    app.use(express.bodyParser());

    /* also works fine here */
    var config = {
      host: 'localhost',
      port: 5432
    }

2 个答案:

答案 0 :(得分:9)

请尝试使用以下内容:

set number
set smartindent
set tabstop=2
set shiftwidth=2
set expandtab
set clipboard=unnamed

答案 1 :(得分:0)

我发现了这个问题,试图理解为什么使用ENTER键()或使用TAB键时,根据自动识别的不同,制表符的大小会有所不同。 阅读较旧的答案后,此链接可帮助我解决问题。 https://www.reddit.com/r/vim/comments/99ylz8/confused_about_the_difference_between_tabstop_and/

为解决这些缩进大小之间的差异,我在$HOME/.vimrc中放入了

set tabstop=2
set shiftwidth=2

通过这两个设置,我意识到tabstop是按键盘上的TAB键时的大小,shiftwidth是按键盘上的Enter键时的大小。