Redefine tab as 4 spaces
我目前的设置假设8个空格; 我怎么能重新定义它?
这取决于你的意思。您是否希望文件中的实际制表符显示为4个空格宽,或者"tab"是否实际上是指通过按Tab键生成的缩进,这将导致文件字面上包含(最多)4个空格字符你输入的每个"标签"?
根据您的答案,下列其中一组
设置应该适合您:
-
对于出现4个空格宽的制表符:
1set tabstop=4如果您在源代码中使用实际制表符,则可能还需要这些设置(这些实际上是默认设置,但您可能希望以防御方式设置它们):
1set softtabstop=0 noexpandtab最后,如果您希望缩进对应于单个选项卡,您还应该使用:
1set shiftwidth=4 -
对于包含4个空格字符但使用Tab键输入的缩进:
1set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
要使上述设置永久添加
这些行到你的vimrc。
如果您需要进行调整,或者只是想了解这些选项的含义,这里是每个选项的含义细分:
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 timestabstop . 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 of
tab characters. This also affects the behavior of theretab command.
smarttab Enabling this will make the tab key (in insert mode) insert spaces or tabs to
go to the next indent
of the next tabstop when the cursor is at the beginning of a line (i.e. the
only preceding characters are whitespace).
有关其中任何一个的更多详细信息,请参阅vim中的
要为当前用户永久定义此项,请创建(或编辑)
1 | $ vim ~/.vimrc |
然后,将下面的配置粘贴到文件中。重新启动vim后,将应用选项卡设置。
1 2 3 4 5 6 7 8 9 10 | 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的简写:
1 | vim :set ts=4 sw=4 sts=4 et : |
我将其复制并粘贴到我的.vimrc文件中:
1 2 3 4 5 6 7 8 | " 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个空格。
第三个设置意味着当我做
不像接受的答案那么全面,但它可能会帮助那些只想要复制和粘贴的人。
几个设置定义是否使用空格或制表符。
所以这里有一些方便的函数,可以在你的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 |
用法:
1 2 | :call UseTabs() :call UseSpaces() |
要按文件扩展名使用它,可以使用以下语法(添加到
1 | au! BufWrite,FileWritePre *.module,*.install call UseSpaces() |
另请参阅:将制表符转换为空格。
这是Wikia的另一个片段,可用于在制表符和空格之间切换:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | " 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以切换设置。
将您想要的设置放在?/ .vimrc文件中 - 请参阅下面的一些指南和最佳实践。
在Vim中使用选项卡有四种主要方法:
始终将'tabstop'保持在8,将'softtabstop'和'shiftwidth'设置为4(或3或任何你喜欢的)并使用'noexpandtab'。然后Vim将使用选项卡和空格的混合,但键入并将表现为每4(或3)个字符出现一个选项卡。
注意:将"tabstop"设置为除8以外的任何其他值可能会使您的文件在许多地方出现错误(例如,打印时)。
将'tabstop'和'shiftwidth'设置为您喜欢的任何内容并使用'expandtab'。这样您将始终插入空格。当'tabstop'改变时,格式永远不会搞砸。
将'tabstop'和'shiftwidth'设置为您喜欢的任何内容并使用| modeline |再次编辑文件时设置这些值。仅在使用Vim编辑文件时有效。
始终将'tabstop'和'shiftwidth'设置为相同的值,并设置'noexpandtab'。这应该适用于人们使用的任何tabstop设置(仅适用于初始缩进)。如果你这样做的话,在第一个非空格作为空格插入后有标签可能会很好。否则,当'tabstop'被更改时,对齐的注释将是错误的。
资源:
- vimdoc.sourceforge.net/htmldoc/options.html#'tabstop"
-
:help tabstop
还有一件事,请使用
将现有的
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
添加行
在
每个用户的
要么
系统范围的
1 | :set sw=4 |
请参阅掌握VI编辑器