我目前的设置是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来切换设置。