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

时间:2010-01-13 05:21:34

标签: vim tabs

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

#selector {
        property: value;
}

(8个空格标签)

如何配置Vim使其像这样:

#selector {
    property: value;
}

(4空格标签)

7 个答案:

答案 0 :(得分:155)

:set tabstop=4
:set shiftwidth=4
:set expandtab

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

答案 1 :(得分:86)

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

textField.textProperty().addListener((observable,oldValue,newValue)->{  
    textField.setText(textField.getText().replace(" ", ""));
});

要使更改成为永久更改,请将其添加到:set tabstop=4 ~/.vimrc

~/.vim/vimrc

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

set tabstop=4

Michał's answer中所述。

答案 2 :(得分:75)

扩大zoul的答案:

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

autocmd Filetype css setlocal tabstop=4

这将使标签显示为4个空格。当你按Tab键时,设置expandtab将导致Vim实际插入空格(由tabstop控制的数量);您可能希望使用softtabstop使退格键正常工作(也就是说,如果使用制表符会发生什么情况,请减少缩进,而不是总是一次删除一个字符。)

要做出完全受过教育的决定如何进行设置,您需要在tabstopshiftwidthsofttabstopexpandtab上阅读Vim文档。最感兴趣的位是expandtab:help 'expandtab):

  

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

     
      
  1. 始终将'tabstop'保持为8,将'softtabstop'和'shiftwidth'设置为4(或3或任何您喜欢的)并使用'noexpandtab'。然后Vim将使用标签和空格的混合,但键入和表现就像一个标签每4(或3)个字符出现。

  2.   
  3. 将'tabstop'和'shiftwidth'设置为您喜欢的任何内容并使用'expandtab'。这样您将始终插入空格。当'tabstop'改变时,格式永远不会搞砸。

  4.   
  5. 将'tabstop'和'shiftwidth'设置为您喜欢的任何内容并使用| modeline |再次编辑文件时设置这些值。仅在使用Vim编辑文件时有效。

  6.   
  7. 始终将'tabstop'和'shiftwidth'设置为相同的值,并设置'noexpandtab'。这应该适用于人们使用的任何tabstop设置(仅适用于初始缩进)。如果你这样做的话,在第一个非空格作为空格插入后有标签可能会很好。否则,当'tabstop'被更改时,对齐的注释将会出错。

  8.   

答案 3 :(得分:27)

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

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

  • 找到/打开您的.vimrc - instructions here
  • 添加以下行:(more info here

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

答案 4 :(得分:6)

如果您需要经常更改大小,并且不想将其绑定到特定文件类型,则可以在.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>

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

答案 5 :(得分:5)

作为vim的一线工具:

:set tabstop=4 shiftwidth=4 expandtab

要进行永久设置,请将这些行添加到〜/ .vimrc中:

set tabstop=4
set shiftwidth=4
set expandtab

答案 6 :(得分:2)

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

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

所以添加了如下一行: autocmd Filetype css setlocal tabstop=2 不起作用。

我创建了 .vim/indent 文件夹并添加了: css.vim

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

它有效!
我尝试在另一台带有 ubuntu focus 和 vim 8.1 的计算机上,它不起作用!-(