Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vim中更改选项卡大小?_Vim_Tabs - Fatal编程技术网

如何在Vim中更改选项卡大小?

如何在Vim中更改选项卡大小?,vim,tabs,Vim,Tabs,每次我在CSS中添加选择器并按下Enter来定义属性时,结果如下所示: #选择器{ 财产:价值; } (8-空格选项卡) 我如何配置Vim使其如下所示: #选择器{ 财产:价值; } (4个空格选项卡) 这将插入四个空格而不是制表符。空格更“稳定”,这意味着带有空格的缩进文本在浏览器和任何其他应用程序中都会显示相同的内容。扩展zoul的答案: 如果要将Vim设置为在编辑特定文件类型时使用特定设置,则需要使用自动命令: autocmd Filetype css setlocal tabstop

每次我在CSS中添加选择器并按下
Enter
来定义属性时,结果如下所示:

#选择器{
财产:价值;
}
(8-空格选项卡)

我如何配置Vim使其如下所示:

#选择器{
财产:价值;
}
(4个空格选项卡)


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

扩展zoul的答案:

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

autocmd Filetype css setlocal tabstop=4
这将使选项卡显示为4个空格。设置
expandtab
将导致Vim在您按tab键时实际插入空格(空格数量由
tabstop
控制);您可能希望使用
softtabstop
使backspace正常工作(也就是说,如果使用制表符,将减少缩进,而不是每次删除一个字符)

要做出关于如何设置的全面决策,您需要阅读
tabstop
shiftwidth
softtabstop
expandtab
上的Vim文档。最有趣的一位位于
expandtab
:help'expandtab
)下:

Vim中有四种主要的选项卡使用方式:

  • 始终将“tabstop”设置为8,将“softtabstop”和“shiftwidth”设置为4(或3或任何您喜欢的值),并使用“noexpandtab”。然后Vim将混合使用制表符和空格,但键入和将表现为每4(或3)个字符出现一个制表符

  • 将“tabstop”和“shiftwidth”设置为您喜欢的值,并使用“expandtab”。这样,您将始终插入空格。更改“tabstop”时,格式将永远不会混乱

  • 将“tabstop”和“shiftwidth”设置为您喜欢的值,并在再次编辑文件时使用| modeline |设置这些值。仅在使用Vim编辑文件时有效

  • 始终将“tabstop”和“shiftwidth”设置为相同的值,并将“noexpandtab”设置为相同的值。然后,对于人们使用的任何tabstop设置,这都应该有效(仅适用于初始缩进)。如果您这样做的话,在第一个非空的标签后面插入空格可能会更好。更改“tabstop”时,否则对齐的注释将是错误的


  • 更新

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

    它允许您在存储库的根目录下定义一个
    .editorconfig
    文件,定义要在存储库中为每种文件类型使用的缩进

    例如:

    root = true
    
    [*.css]
    charset = utf-8
    indent_style = space
    indent_size = 4
    
    [*.js]
    charset = utf-8
    indent_style = space
    indent_size = 2
    
    有一个根据您打开的文件的配置文件自动配置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>
    
    nmap t:set expandtab tabstop=4 shiftwidth=4 softtabstop=4
    nmap m:设置expandtab tabstop=2 shiftwidth=2 softtabstop=2
    

    这将两组不同的大小映射到键\t和\m。您可以将其重新绑定到所需的任何键。

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

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

    set tabstop=4
    
    这将影响所有文件,而不仅仅是css。要仅影响css文件,请执行以下操作:

    autocmd Filetype css setlocal tabstop=4
    

    如中所述

    本页中的几个答案是对所述问题的“一次性”修复。也就是说,下次使用vim打开文档时,将返回以前的选项卡设置

    如果有人想永久更改选项卡设置:

    • 查找/打开您的.vimrc-
    • 添加以下行:()

    • 然后保存文件并进行测试


    作为一个进入vim的衬里

    :set tabstop=4 shiftwidth=4
    
    set tabstop=4
    set shiftwidth=4
    
    对于永久设置,将这些行添加到~/.vimrc

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

    注意:添加
    设置expandtab
    如果你喜欢4个空格的缩进,而不是制表符缩进。

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

    因此,添加了如下行:
    autocmd文件类型css setlocal tabstop=2
    不起作用

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

    set tabstop=2
    set shiftwidth=2
    set softtabstop=2
    
    而且它有效

    我试着在另一台装有ubuntu focal和vim 8.1的计算机上运行,它不工作-(

    您想要一个4格宽的制表符?四个空格?还是四个1格宽的制表符?它们是不同的东西,您不清楚。在任何情况下,请先阅读:he ts、:he sw和:he expandtYes,但制表符是语义的(每个制表符表示一层缩进),而空格纯粹是表示性的。或者换句话说,使用制表符可以让其他人查看您的代码,无论他们喜欢多宽,而空格不允许。请注意,如果您更喜欢“>”和“另外”,不要太担心以后可能会改变主意……请参见
    :help retab
    (检查!变体).autocmd的使用是对.vimrc的补充,还是一种替代方法?如果您希望tab用作四个空格,则有必要将@Zoul答案中的其他行也添加到.vimrc中;也就是说,将'set-shiftwidth=4'和'set-expandtab'添加到.vimrc中。问题是“如何在Vim中更改选项卡大小?”我就是这样做的。为了确保总是备份
    ~/.vimrc
    ,我通常将文件保存在我的Dropbox文件夹中,然后创建一个指向桌面的sym链接:
    ln-s/home/myfolder/Dropbox/.vimrc
    
    set tabstop=2
    set shiftwidth=2
    set softtabstop=2