我目前的设置是8个空格;我该如何重新定义它呢?
当前回答
还有一件事,使用 : retab 将现有制表符转换为空格 http://vim.wikia.com/wiki/Converting_tabs_to_spaces
其他回答
添加一行 将ts = 4 在 ~ /。每个用户的Vimrc文件 或 /etc/vimrc文件用于整个系统
确保vartabstop未设置
set vartabstop=
设置tabstop为4
set tabstop=4
我复制并粘贴到我的。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个空格。
不像公认的答案那么全面,但它可能会帮助那些只想复制和粘贴一些东西的人。
或者vim modeline的简写:
vim :set ts=4 sw=4 sts=4 et :
很少有设置定义是使用空格还是制表符。
这里有一些方便的函数,可以在~/中定义。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来切换设置。