将选项卡重新定义为4个空格

我目前的设置假设8个空格;我如何重新定义它?

1016842 次浏览

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

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

  • 对于出现4个空格宽的制表符

    set tabstop=4

    如果您在源代码中使用实际的制表符,您可能还需要这些设置(这些实际上是默认值,但您可能希望防御性地设置它们):

    set softtabstop=0 noexpandtab

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

    set shiftwidth=4
  • For indents that consist of 4 space characters but are entered with the tab key:

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

To make the above settings permanent addthese lines to your vimrc.

In case you need to make adjustments, or would simply like to understand what these options all mean, here's a breakdown of what each option means:

tabstop

The width of a hard tabstop measured in "spaces" -- effectively the (maximum) width of an actual tab character.

shiftwidth

The size of an "indent". It's also measured in spaces, so if your code base indents with tab characters then you want shiftwidth to equal the number of tab characters times tabstop. This is also used by things like the =, > and < commands.

softtabstop

Setting this to a non-zero value other than tabstop will make the tab key (in insert mode)insert a combination of spaces (and possibly tabs) to simulate tab stops at this width.

expandtab

Enabling this will make the tab key (in insert mode) insert spaces instead oftab characters. This also affects the behavior of the retab command.

smarttab

Enabling this will make the tab key (in insert mode) insert spaces or tabs togo to the next indentof the next tabstop when the cursor is at the beginning of a line (i.e. theonly preceding characters are whitespace).

For more details on any of these see :help 'optionname' in vim (e.g. :help 'tabstop')

要为当前用户永久定义它,请创建(或编辑).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

或vim Modeline的简写:

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

我将其复制并粘贴到我的. vimrc文件中:

" size of a hard tabstopset tabstop=4
" always uses spaces instead of tab charactersset expandtab
" size of an "indent"set shiftwidth=4

前2个设置意味着当我按Tab时,我得到4个空格。第三个设置意味着当我做V>(即视觉和缩进)时,我也得到4个空格。

没有公认的答案那么全面,但它可能会帮助那些只想复制和粘贴东西的人。

将您想要的设置放在~/. vimrc文件中——请参阅下面的一些指南和最佳实践。

在Vim中使用选项卡有四种主要方法:

  1. 始终将tabStop保持在8,将softtabStop和shiftwidth设置为4(或3或您喜欢的任何值)并使用noexpandtab。然后Vim将使用制表符和空格的混合,但键入and将像制表符一样每4(或3)个字符出现一次。

    备注:将“tabStop”设置为8以外的任何其他值都会使您的文件在许多地方出现错误(例如,打印时)。

  2. 将tabStop和shiftwidth设置为您喜欢的任何位置并使用扩展选项卡。这样您将始终插入空格。当改变tabStop时,格式永远不会混乱。

  3. 将tabStop和shiftwidth设置为您喜欢的任何值,并在再次编辑文件时使用|建模|设置这些值。仅在使用Vim编辑文件时有效。

  4. 始终将tabStop和shiftwidth设置为相同的值,并将noexpandtab设置为相同的值。然后,这应该适用于人们使用的任何制表符设置(仅适用于初始缩进)。如果您这样做,在第一个非空白之后插入制表符作为空格可能会很好。否则,当改变tabStop时,对齐的注释将是错误的。

来源:

添加行
set ts=4

~/.vimrc每个用户的文件

/etc/vimrc系统范围的文件

还有一件事,使用
:retab
将现有标签页转换为空格http://vim.wikia.com/wiki/Converting_tabs_to_spaces

很少有设置定义是使用空格还是制表符。

所以这里有一些方便的函数,可以在你的~/.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 spacesset shiftwidth=4set softtabstop=4set expandtab" allow toggling between local and default modefunction TabToggle()if &expandtabset shiftwidth=8set softtabstop=0set noexpandtabelseset shiftwidth=4set softtabstop=4set expandtabendifendfunctionnmap <F9> mz:execute TabToggle()<CR>'z

它可以为每个选项卡使用4个空格,并映射到F9来切换设置。

我的基本~/. vimrc带注释:

set number " show line numberset tabstop=2 " set display width of tab; 1 tab = x space withset expandtab " transform tab to x space (x is tabstop)set autoindent " auto indent; new line with number of space at the beginning same as previousset shiftwidth=2 " number of space append to lines when type >>

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

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

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

确保vartabstop未设置

set vartabstop=

设置tabstop到4

set tabstop=4