我目前的设置是8个空格;我该如何重新定义它呢?
当前回答
确保vartabstop未设置
set vartabstop=
设置tabstop为4
set tabstop=4
其他回答
我基本的~/。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 >>
将您想要的设置放在~/。vimrc文件——请参阅下面的一些指导方针和最佳实践。
在Vim中使用标签有四种主要方式:
Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4 (or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim will use a mix of tabs and spaces, but typing and will behave like a tab appears every 4 (or 3) characters. Note: Setting 'tabstop' to any other value than 8 can make your file appear wrong in many places (e.g., when printing it). Set 'tabstop' and 'shiftwidth' to whatever you prefer and use 'expandtab'. This way you will always insert spaces. The formatting will never be messed up when 'tabstop' is changed. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a |modeline| to set these values when editing the file again. Only works when using Vim to edit the file. Always set 'tabstop' and 'shiftwidth' to the same value, and 'noexpandtab'. This should then work (for initial indents only) for any tabstop setting that people use. It might be nice to have tabs after the first non-blank inserted as spaces if you do this though. Otherwise aligned comments will be wrong when 'tabstop' ischanged.
来源:
vimdoc.sourceforge.net/htmldoc/options.html #“制表符” :帮助制表符
很少有设置定义是使用空格还是制表符。
这里有一些方便的函数,可以在~/中定义。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
用法:
:call UseTabs()
:call UseSpaces()
要在每个文件扩展名中使用它,可以使用以下语法(添加到.vimrc):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
请参见:将制表符转换为空格。
下面是来自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
它可以为每个选项卡使用4个空格,并映射到F9来切换设置。
对于永久的更改,创建文件~/.vim/plugin/tab_expander。用内容进行Vim
set tabstop=4 softtabstop=4 expandtab shiftwidth=4 smarttab
防止碰~/。Vimrc,从而保持其他默认设置不变。
我复制并粘贴到我的。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
前两个设置意味着当我按Tab键时,我得到4个空格。 第三个设置意味着当我做V>(即视觉和缩进)时,我也得到了4个空格。
不像公认的答案那么全面,但它可能会帮助那些只想复制和粘贴一些东西的人。