如何在Vim中更改标签大小?

How do I change tab size in Vim?

每次我在CSS中添加一个选择器,然后按Enter来定义属性,它最终会像这样:

1
2
3
#selector {
        property: value;
}

(8个空格标签)

如何配置Vim使其像这样:

1
2
3
#selector {
    property: value;
}

(4个空格标签)


1
2
3
:set tabstop=4
:set shiftwidth=4
:set expandtab

这将插入四个空格而不是制表符。空格更加"稳定",这意味着用空格缩进的文本在浏览器和任何其他应用程序中都会显示相同的内容。


要对一个会话进行更改,请使用以下命令:

1
:set tabstop=4

要使更改成为永久更改,请将其添加到~/.vimrc~/.vim/vimrc

1
set tabstop=4

这将影响所有文件,而不仅仅是css。仅影响css文件:

1
autocmd Filetype css setlocal tabstop=4

正如Micha的答案所述。


扩展zoul的答案:

如果要在编辑特定文件类型时将Vim设置为使用特定设置,则需要使用自动命令:

1
autocmd Filetype css setlocal tabstop=4

这将使标签显示为4个空格。设置expandtab将导致Vim在按Tab键时实际插入空格(由tabstop控制的数量);您可能希望使用softtabstop来使退格正常工作(也就是说,如果应该使用选项卡,那么减少缩进,而不是总是一次删除一个char)。

要对如何设置进行全面教育的决定,您需要阅读tabstopshiftwidthsofttabstopexpandtab上的Vim文档。最有趣的位是在expandtab(:help 'expandtab)下找到的:

There are four main ways to use tabs in Vim:

  • Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4 (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim will use a mix of tabs and spaces, but typing and will behave like a tab appears every 4 (or 3) characters.

  • Set 'tabstop' and 'shiftwidth' to whatever you prefer and use 'expandtab'. This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed.

  • Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a |modeline| to set these values when editing the file again. Only works when using Vim to edit the file.

  • Always set 'tabstop' and 'shiftwidth' to the same value, and 'noexpandtab'. This should then work (for initial indents only) for any tabstop setting that people use. It might be nice to have tabs after the first non-blank inserted as spaces if you do this though. Otherwise aligned comments will be wrong when 'tabstop' is changed.


  • 此页面上的几个答案是针对所述问题的"单次使用"修复。这意味着,下次使用vim打开文档时,将返回先前的选项卡设置。

    如果有人有兴趣永久更改标签设置:

    • 在这里找到/打开你的.vimrc - 说明
    • 添加以下行:(更多信息在这里)

      1
      2
      3
       set tabstop=4
       set shiftwidth=4
       set expandtab
    • 然后保存文件并测试


    如果您需要经常更改大小而不想将其绑定到特定文件类型,则可以在.vimrc文件上使用预定义命令来快速切换首选项:

    1
    2
    nmap <leader>t :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
    nmap <leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>

    这将两个不同的大小映射到keys t和 m。您可以将其重新绑定到您想要的任何键。