我目前的设定是假设8个空格;我该如何重新定义它?
我目前的设定是假设8个空格;我该如何重新定义它?
Answers:
这取决于你的意思。您是要让文件中的实际制表符显示 4个空格,还是按“制表符”,实际上是指按Tab键生成的缩进,该缩进将导致文件实际包含(最多)4个空格字符您键入的每个“标签”?
根据您的答案,以下设置之一应该适合您:
对于出现在4个空格范围内的制表符:
set tabstop=4
如果您在源代码中使用实际的制表符,则可能还需要这些设置(这些实际上是默认设置,但您可能需要进行防御性设置):
set softtabstop=0 noexpandtab
最后,如果您希望缩进与单个选项卡相对应,则还应该使用:
set shiftwidth=4
对于由4个空格字符组成但使用Tab键输入的缩进:
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
如果您需要进行调整,或者只是想了解这些选项的全部含义,以下是每个选项的含义的细分:
tabstop
硬制制制表符的宽度,以“空格”度量-有效地表示实际制表符的(最大)宽度。
shiftwidth
“缩进”的大小。它也以空格进行度量,因此,如果您的代码库使用制表符缩进,那么您希望
shiftwidth
将制表符字符数乘以tabstop
。=
,>
和<
命令之类的东西也使用此功能。
softtabstop
将此值设置为非零值
tabstop
将使Tab键(在插入模式下)插入空格(可能还有制表符)的组合以模拟制表符在此宽度处的停止。
expandtab
启用此选项将使Tab键(在插入模式下)插入空格而不是Tab字符。这也会影响
retab
命令的行为。
smarttab
启用此选项将使Tab键(在插入模式下)在光标位于行首时(即,前面的唯一字符为空格)插入空格或制表符,以转到下一个制表符的下一个缩进。
有关任何这些的更多详细信息,请参见vim(例如)。:help 'optionname'
:help 'tabstop'
~/.vimrc
是用户的vim设置。大多数人不理会系统设置,而只是编辑用户设置。请注意,~/.vimrc
只有在大多数系统上创建它后,该属性才存在。
set softtabstop=4
功能!我厌倦了尝试使用less
或任何其他编辑器读取代码vim
,只是为了看到古怪的缩进,因为您将Tab重新定义为任意数量的空格(即使系统其余部分认为不是这样)!:-)
tabstop=8
用于由4个空格组成的缩进吗?阅读各种设置的说明后,我找不到原因。另一个答案说使用tabstop=4
它对我来说更有意义。
tabstop
选项控制硬制表符的宽度。如果您希望缩进由4个空格字符组成,而不是由4个宽的单个制表符组成,则制表符的宽度无关紧要- 有点像。在实践中,您可能希望制表符的宽度与缩进的宽度不同,以减少制表符伪装成适当的缩进的机会。(list
+ expandtab
在这里也可以提供帮助)此外,8字符宽的选项卡是“标准”-您的终端,Python和许多其他工具默认为8字符宽的选项卡。
要为当前用户永久定义此.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
很少有设置定义使用空格还是制表符。
因此,以下是可以在~/.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来切换设置。
将所需的设置放入〜/ .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”时对齐的注释将是错误的。
资源:
:help tabstop
:help tabstop
vim中逐字记录的。
还有一件事,用于
:retab
将现有内容转换tab
为spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
set ts=4
在
~/.vimrc
每个用户的文件中添加行,
或者
/etc/vimrc
在系统范围的文件中添加行
我的基本〜/ .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 >>
永久所有用户(当您独自在服务器上时):
# echo "set tabstop=4" >> /etc/vim/vimrc
通常,在新服务器apt-get purge nano mc
和所有其他服务器上可以节省您的时间。否则,您将在中重新定义编辑器git
,crontab
等等
F10
中nano
,但我总是做一些技巧与保存(也许F10
是一个解决方案)。还是不起作用screen
?我不记得了,只是讨厌它)