我目前的设置假设有8个空格;我怎么能重新定义它?
答案 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中使用标签有四种主要方式:
始终保持&tabstop&#39;在8,设置&softmbstop&#39;和&#39; shiftwidth&#39;到4(或3或任何你喜欢的)并使用&#39; noexpandtab&#39;。然后Vim将使用标签和空格的混合,但键入和行为类似于每4(或3)个字符的标签。
注意:设置&#39; tabstop&#39;除了8之外的任何其他值可能会使您的文件在许多地方出现错误(例如,打印时)。
设置&tabstop&#39;和&#39; shiftwidth&#39;无论你喜欢什么,使用&#39; expandtab&#39;。这样您将始终插入空格。当&#39; tabstop&#39;时,格式化将永远不会搞砸。改变了。
设置&tabstop&#39;和&#39; shiftwidth&#39;无论你喜欢什么,使用| modeline |再次编辑文件时设置这些值。仅在使用Vim编辑文件时有效。
始终设置&tabstop&#39;和&#39; shiftwidth&#39;相同的价值,以及“noexpandtab&#39;”。这应该适用于人们使用的任何tabstop设置(仅适用于初始缩进)。如果你这样做的话,在第一个非空格作为空格插入后有标签可能会很好。否则,当&tabratop&#39; tabstop&#39; ischanged。
来源:
:help tabstop
答案 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
答案 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
和所有其他服务器上,可以节省您的时间。否则,您将在git
,crontab
等中重新定义编辑器。
答案 11 :(得分:0)
确保 vartabstop
未设置
set vartabstop=
将 tabstop
设置为 4
set tabstop=4