19

我有这个标签间距配置:

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', {       
       标题:sequelize.STRING,      
       内容:sequelize.STRING,
         | /* 错误的空格 */
     });

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

我不知道有什么问题。

编辑:

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

    /* 2 个空格可以正常工作*/
    app.set('端口', 3000);
    app.use(express.bodyParser());

    /* 在这里也可以正常工作 */
    变量配置 = {
      主机:'本地主机',
      端口:5432
    }

4

2 回答 2

19

请尝试使用以下内容:

set smartindent
set tabstop=2
set shiftwidth=2
set expandtab
于 2013-07-29T04:47:06.630 回答
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 时的大小。

于 2020-06-24T18:00:48.210 回答