我如何改变标签大小在Vim?

每次我在CSS中添加选择器并按Enter来定义属性时,它的结果是这样的:

#selector {
property: value;
}

(8-space标签)

我如何配置Vim使它像这样:

#selector {
property: value;
}

(4空间选项卡)

385920 次浏览
:set tabstop=4
:set shiftwidth=4
:set expandtab

这将插入四个空格而不是制表符。空格更“稳定”一点,这意味着缩进的空格文本在浏览器和其他应用程序中显示的效果是一样的。

扩展zoul的回答:

如果你想设置Vim在编辑特定文件类型时使用特定的设置,你会想使用自动命令:

autocmd Filetype css setlocal tabstop=4

这将使制表符显示为4个空格。设置expandtab将导致Vim在你按tab键时实际插入空格(空格的数量由tabstop控制);你可能想要使用softtabstop来使退格键正常工作(也就是说,当使用制表符时减少缩进,而不是总是一次删除一个字符)。

为了做出一个关于如何设置的完全有根据的决定,你需要阅读Vim文档中的tabstopshiftwidthsofttabstopexpandtab。最有意思的位在expandtab (:help 'expandtab)下面:

在Vim中使用标签有四种主要方式:

  1. 总是保持“tabstop”为8,设置“softtabstop”和“shiftwidth”为4(或3或任何你喜欢的),并使用“noexpandtab”。然后Vim将混合使用制表符和空格,但是输入和将表现为每4(或3)个字符出现一个制表符。

  2. 设置'tabstop'和'shiftwidth'为任何你喜欢的,并使用'expandtab'。通过这种方式,您将始终插入空格。当'tabstop'被更改时,格式永远不会被打乱。

  3. 将'tabstop'和'shiftwidth'设置为您喜欢的任何值,并在再次编辑文件时使用|modeline|设置这些值。只有在使用Vim编辑文件时才有效。

  4. 总是设置'tabstop'和'shiftwidth'为相同的值,以及'noexpandtab'。这应该适用于人们使用的任何制表符设置(仅用于初始缩进)。如果您这样做的话,在第一个非空格之后插入制表符作为空格可能会很好。否则,当'tabstop'被更改时,对齐的注释将是错误的。

更新

如果你在一个特定的项目中工作,我强烈建议使用editorconfig

它允许您在存储库的根定义一个.editorconfig文件,定义跨存储库的每个文件类型的缩进。

例如:

root = true


[*.css]
charset = utf-8
indent_style = space
indent_size = 4


[*.js]
charset = utf-8
indent_style = space
indent_size = 2

有一个vim插件根据你打开的文件的配置文件自动配置vim。

最重要的是,许多其他ide和编辑器自动支持.editorconfig文件,因此它是不同环境的用户之间协作的最佳选择。

原来的答案

如果你需要经常改变大小,并且你不想把它绑定到特定的文件类型,你可以在你的.vimrc文件上有预定义的命令来快速切换首选项:

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

这将两组不同的大小映射到键\t和\m。你可以把它重新绑定到任何你想要的键。

要更改一个会话,使用以下命令:

:set tabstop=4

要使更改永久存在,请将其添加到~/.vimrc~/.vim/vimrc:

set tabstop=4

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

autocmd Filetype css setlocal tabstop=4

Michał回答中所述。

本页上的几个答案是对所描述问题的“一次性”修复。这意味着,下次使用vim打开文档时,将返回先前的选项卡设置。

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

作为一行代码进入vim:

:set tabstop=4 shiftwidth=4

对于永久的设置,将这些行添加到~ / . vimrc:

set tabstop=4
set shiftwidth=4
set expandtab    <-- (optional) 4-spaces instead of Tab indentation

在我的.vim/vimrc (ubuntu bionic下的vim 8.0)中,我有

if has("autocmd")
filetype plugin indent on
endif

so added line like: autocmd Filetype css setlocal tabstop=2 不工作。< / p > 我创建了.vim/indent文件夹,并添加到: css.vim < / p >

set tabstop=2
set shiftwidth=2
set softtabstop=2

and it works 我试着在另一台ubuntu focal和vim 8.1的电脑上,它不工作

在vim命令模式下,写入:

:set ts=X

X是你想要的新空间长度