Lau*_*ves 1531
这取决于你的意思.您是否希望文件中的实际制表符显示为 4个空格宽,或者"tab"是否实际上是指通过按Tab键生成的缩进,这将导致文件字面上包含(最多)4个空格字符你输入的每个"标签"?
根据您的答案,以下设置之一应该适合您:
对于出现4个空格宽的制表符:
set tabstop=4
Run Code Online (Sandbox Code Playgroud)
如果您在源代码中使用实际制表符,则可能还需要这些设置(这些实际上是默认设置,但您可能希望以防御方式设置它们):
set softtabstop=0 noexpandtab
Run Code Online (Sandbox Code Playgroud)
最后,如果您希望缩进对应于单个选项卡,您还应该使用:
set shiftwidth=4
Run Code Online (Sandbox Code Playgroud)对于包含4个空格字符但使用Tab键输入的缩进:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Run Code Online (Sandbox Code Playgroud)要使上述设置永久添加到您的vimrc.
如果您需要进行调整,或者只是想了解这些选项的含义,这里是每个选项的含义细分:
tabstop在"空格"中测量的硬tabstop的宽度 - 实际上是实际制表符的(最大)宽度.
shiftwidth"缩进"的大小.它也是在空格中测量的,所以如果你的代码库用制表符缩进,那么你想要
shiftwidth等于制表符的次数tabstop.这也被搞什么=,>和<命令.
softtabstop将此值设置为非零值
tabstop将使Tab键(在插入模式下)插入空格组合(以及可能的选项卡)以模拟此宽度处的制表位.
expandtab启用此选项将使Tab键(在插入模式下)插入空格而不是制表符.这也会影响
retab命令的行为.
smarttab启用此选项将使tab键(在插入模式下)插入空格或制表符,以便当光标位于行的开头时(即前面的唯一字符是空格),转到下一个tabstop的下一个缩进.
有关这些中的任何内容的更多详细信息,请参阅vim(例如):help 'optionname':help 'tabstop'
Ala*_*avi 724
要为当前用户永久定义此项,请创建(或编辑)该.vimrc文件:
$ vim ~/.vimrc
Run Code Online (Sandbox Code Playgroud)
然后,将下面的配置粘贴到文件中.重新启动vim后,将应用选项卡设置.
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
Run Code Online (Sandbox Code Playgroud)
zen*_*zen 53
或者是vim modeline的简写:
vim :set ts=4 sw=4 sts=4 et :
Run Code Online (Sandbox Code Playgroud)
Sno*_*ash 25
我将其复制并粘贴到我的.vimrc文件中:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
Run Code Online (Sandbox Code Playgroud)
前两个设置意味着当我按Tab键时我得到4个空格.第三个设置意味着当我这样做时V>(即视觉和缩进)我也得到4个空格.
不像接受的答案那么全面,但它可能会帮助那些只想要复制和粘贴的人.
ken*_*orb 21
几个设置定义是否使用空格或制表符.
所以这里有方便的功能,可以在你的~/.vimrc文件中定义:
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
Run Code Online (Sandbox Code Playgroud)
用法:
:call UseTabs()
:call UseSpaces()
Run Code Online (Sandbox Code Playgroud)
要按文件扩展名使用它,可以使用以下语法(添加到.vimrc):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Run Code Online (Sandbox Code Playgroud)
另请参阅:将制表符转换为空格.
这是Wikia的另一个片段,可用于在制表符和空格之间切换:
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
Run Code Online (Sandbox Code Playgroud)
它允许为每个选项卡使用4个空格,并使用映射F9来切换设置.
Ela*_*hts 14
将您想要的设置放在〜/ .vimrc文件中 - 请参阅下面的一些指南和最佳实践.
在Vim中使用选项卡有四种主要方法:
始终将'tabstop'保持在8,将'softtabstop'和'shiftwidth'设置为4(或3或任何你喜欢的)并使用'noexpandtab'.然后Vim将使用选项卡和空格的混合,但键入并将表现为每4(或3)个字符出现一个选项卡.
注意:将"tabstop"设置为除8之外的任何其他值可能会使您的文件在许多地方出现错误(例如,打印时).
将'tabstop'和'shiftwidth'设置为您喜欢的任何内容并使用'expandtab'.这样您将始终插入空格.当'tabstop'改变时,格式永远不会搞砸.
将'tabstop'和'shiftwidth'设置为您喜欢的任何内容并使用| modeline | 再次编辑文件时设置这些值.仅在使用Vim编辑文件时有效.
始终将'tabstop'和'shiftwidth'设置为相同的值,并设置'noexpandtab'.这应该适用于人们使用的任何tabstop设置(仅适用于初始缩进).如果你这样做的话,在第一个非空格作为空格插入后有标签可能会很好.否则,当'tabstop'被更改时,对齐的注释将是错误的.
资源:
:help tabstop我的基本 ~/.vimrc 与评论:
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>
Run Code Online (Sandbox Code Playgroud)