Redefine tab as 4 spaces

My current setting assumes 8 spaces; how could I redefine it?


It depends on what you mean. Do you want actual tab characters in your file to appear 4 spaces wide, or by "tab" do you actually mean an indent, generated by pressing the tab key, which would result in the file literally containing (up to) 4 space characters for each "tab" you type?

Depending on your answer, one of the following sets of settings should work for you:

  • For tab characters that appear 4-spaces-wide :

    set tabstop=4
    

    If you're using actual tab character in your source code you probably also want these settings (these are actually the defaults, but you may want to set them defensively):

    set softtabstop=0 noexpandtab
    

    Finally, if you want an indent to correspond to a single tab, you should also use:

    set shiftwidth=4
    
  • For indents that consist of 4 space characters but are entered with the tab key:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    
  • To make the above settings permanent add these lines to your vimrc.

    In case you need to make adjustments, or would simply like to understand what these options all mean, here's a breakdown of what each option means:

    tabstop

    The width of a hard tabstop measured in "spaces" -- effectively the (maximum) width of an actual tab character.

    shiftwidth

    The size of an "indent". It's also measured in spaces, so if your code base indents with tab characters then you want shiftwidth to equal the number of tab characters times tabstop . This is also used by things like the = , > and < commands.

    softtabstop

    Setting this to a non-zero value other than tabstop will make the tab key (in insert mode) insert a combination of spaces (and possibly tabs) to simulate tab stops at this width.

    expandtab

    Enabling this will make the tab key (in insert mode) insert spaces instead of tab characters. This also affects the behavior of the retab command.

    smarttab

    Enabling this will make the tab key (in insert mode) insert spaces or tabs to go to the next indent of the next tabstop when the cursor is at the beginning of a line (ie the only preceding characters are whitespace).

    For more details on any of these see :help 'optionname' in vim (eg :help 'tabstop' )


    To define this on a permanent basis for the current user, create (or edit) the .vimrc file:

    $ vim ~/.vimrc
    

    Then, paste the configuration below into the file. Once vim is restarted, the tab settings will apply.

    set tabstop=4       " The width of a TAB is set to 4.
                        " Still it is a t. It is just that
                        " Vim will interpret it to be having
                        " a width of 4.
    
    set shiftwidth=4    " Indents will have a width of 4
    
    set softtabstop=4   " Sets the number of columns for a TAB
    
    set expandtab       " Expand TABs to spaces
    

    或vim modeline的简写:

    vim :set ts=4 sw=4 sts=4 et :
    
    链接地址: http://www.djcxy.com/p/28642.html

    上一篇: 如何在基于大括号的vim中定义缩进?

    下一篇: 将选项卡重新定义为4个空格