将标签重新定义为4个空格

时间:2009-12-10 06:18:03

标签: vim

我目前的设置假设有8个空格;我怎么能重新定义它?

12 个答案:

答案 0 :(得分:1443)

这取决于你的意思。您是否希望文件中的实际制表符出现 4个宽,或者“制表符”实际上是指缩进,通过按Tab键生成导致文件字面上包含(最多)4个空格字符为您键入的每个“选项卡”?

根据您的回答,以下其中一组 设置应该适合你:

  • 对于显示为4个空格的广告字符

    set tabstop=4
    

    如果你在源代码中使用实际制表符,你可能也想要这些设置(这些实际上是默认设置,但你可能想要在防御时设置它们):

    set softtabstop=0 noexpandtab
    

    最后,如果您希望缩进对应于单个制表符,则还应使用:

    set shiftwidth=4
    
  • 对于包含4个空格字符的缩进,但是使用制表键输入:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

要使上述设置永久添加 这些行显示在vimrc

如果您需要进行调整,或者只是想了解这些选项的含义,这里是每个选项的含义细分:

  

tabstop

     

以“空格”衡量的硬牌桌面宽度 - 实际上是实际制表符的(最大)宽度。

     

shiftwidth

     

“缩进”的大小。它也是用空格来衡量的,所以如果你的代码库用制表符缩进,那么你希望shiftwidth等于制表符的数量乘以tabstop。这也用于=><命令之类的内容。

     

softtabstop

     

将此值设置为tabstop以外的非零值将生成Tab键(在插入模式下)   在此宽度处插入模拟制表位的空格组合(以及可能的制表符)。

     

expandtab

     

启用此选项将使Tab键(在插入模式下)插入空格而不是   制表符。这也会影响retab命令的行为。

     

smarttab

     

启用此选项将使Tab键(在插入模式下)插入空格或制表符   转到下一个缩进   当光标位于一行的开头时,即下一个tabstop   只有前面的字符是空格。)

有关其中任何内容的详细信息,请参阅vim中的:help 'optionname'(例如:help 'tabstop'

答案 1 :(得分:703)

要为当前用户永久定义此内容,请创建(或编辑).vimrc文件:

$ vim ~/.vimrc

然后,将下面的配置粘贴到文件中。重新启动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

答案 2 :(得分:51)

或vim modeline的简写:

vim :set ts=4 sw=4 sts=4 et :

答案 3 :(得分:23)

我将其复制并粘贴到我的.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个空格。

不如接受的答案那么全面,但它可能会帮助那些只想要复制和粘贴内容的人。

答案 4 :(得分:13)

将您想要的设置放在〜/ .vimrc 文件中 - 请参阅下面的一些指南和最佳做法。

在Vim中使用标签有四种主要方式:

  1. 始终保持&tabstop&#39;在8,设置&softmbstop&#39;和&#39; shiftwidth&#39;到4(或3或任何你喜欢的)并使用&#39; noexpandtab&#39;。然后Vim将使用标签和空格的混合,但键入和行为类似于每4(或3)个字符的标签。

    注意:设置&#39; tabstop&#39;除了8之外的任何其他值可能会使您的文件在许多地方出现错误(例如,打印时)。

  2. 设置&tabstop&#39;和&#39; shiftwidth&#39;无论你喜欢什么,使用&#39; expandtab&#39;。这样您将始终插入空格。当&#39; tabstop&#39;时,格式化将永远不会搞砸。改变了。

  3. 设置&tabstop&#39;和&#39; shiftwidth&#39;无论你喜欢什么,使用| modeline |再次编辑文件时设置这些值。仅在使用Vim编辑文件时有效。

  4. 始终设置&tabstop&#39;和&#39; shiftwidth&#39;相同的价值,以及“noexpandtab&#39;”。这应该适用于人们使用的任何tabstop设置(仅适用于初始缩进)。如果你这样做的话,在第一个非空格作为空格插入后有标签可能会很好。否则,当&tabratop&#39; tabstop&#39; ischanged。

  5. 来源:

答案 5 :(得分:13)

定义是否使用空格或制表符的设置很少。

所以这里有一些方便的功能,可以在~/.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()

另请参阅:Converting tabs to spaces

以下是Wikia的另一个片段,可用于toggle between tabs and spaces

" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
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 的映射来切换设置。

答案 6 :(得分:9)

还有一件事,请使用
:retab
将现有tab转换为spaces http://vim.wikia.com/wiki/Converting_tabs_to_spaces

答案 7 :(得分:6)

添加行
set ts=4

每个用户的~/.vimrc个文件

 系统范围的/etc/vimrc文件

答案 8 :(得分:5)

:set sw=4

请参阅Mastering the VI editor

答案 9 :(得分:1)

我的基本〜/ .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 >> 

答案 10 :(得分:1)

所有用户的永久身份(当您独自在服务器上时):

# echo "set tabstop=4" >> /etc/vim/vimrc

将设置追加到配置文件中。 通常,在新服务器apt-get purge nano mc和所有其他服务器上,可以节省您的时间。否则,您将在gitcrontab等中重新定义编辑器。

答案 11 :(得分:0)

确保 vartabstop 未设置

set vartabstop=

tabstop 设置为 4

set tabstop=4