缩进:
参考自http://liuzhijun.iteye.com/blog/1831548,http://blog.csdn.net/chenxiang6891/article/details/41348073(如有版权问题,请联系沟通)
normal 模式下:
>> 当前行增加缩进
<< 当前行减少缩进
insert模式下:
CTRL+SHIFT+T:当前行增加缩进
CTRL+SHIFT+D:当前行减少缩进
shiftwidth、tabstop、softtabstop、expandtab:
shiftwidth reindent 操作(<<和>>)时缩进的列数(这里的一列相当于一个空格. set shiftwidth=4命令来设定tab宽. tabstop 只在文档中读到\t (Tab) 時,要解释为几个space数,常设定为set tabstop=4. abstop本身是一个常量,进行\t与space的宽度兑换,即一个\t能兑换成多少个宽度的space字符。在没有设置softtabstop之前(即softtabstop=0,如果触发一个\t操作输入时兑换成的tab宽度就是一个\t且宽度等于tabstop,还有就是作为读档时一个\t键能占多少个宽度。softtabstop 敲入tab键时,或者编辑动作(backspcae)时,实际占有的列数(对空白的解释)。softtabstop是一个转换器,当你通过键盘触发了一个\t操作时,他会将其转换为多少个宽度的字符,但是vim中此时他只点有\t而不是很多个你设定的sottabstop的宽度的spaces,这个属性是一个很有意思的东西。当你开启他时(即 softtabstop!=0),这个时候只要点击键盘上的Tab键时,就会触发一个兑换与合并的功能(当然这个你得开启noexpandtab这个属性,这个属性下面会讲),那么这个时候就输入的tab就不是直接输入到vim中了,这个时候tab键就充当一个扳机触发了兑换与合并的操作,当然如果expandtab了,那么你键入tab键时,就直接总换成softtabstop所对于的宽度的space了expandtabset expandtab将tab装换为space(实际file存储以space形式,not tab).如想將既有的<Tab> 轉成 space, 可在set expandtab之后附加命令:retab!
-
expandtab当然就是展开了。就是将所有输入到vim中的\t转化成为多少个空格了,
-
如果noexpandtab,那么就是解释上同不过仅仅是一个\t点用多少个宽度的spaces的位置(注意了,其实质是占位)。
举例:
set noexpandtabset sw=4
set tabstop=4
set softtabstop=4
新加入的 Tab 都會是 \t , Tab 為 4 個 space ,讀取檔案的 \t 會被翻譯為 4 個 space ,在操作 BS 的時候,4 個空白會被當作一個 tab 刪除
實際上 softabstop 比較常用在 expandtab 的模式下:
set expandtab
set sw=4
set tabstop=4 " 怕檔案裡頭仍有 \t
set softtabstop=4
如此被延展為空白的 space 也可以像是 tab 一樣被刪除固定的 space 數(softtabstop=4)附帶一題,由於 tab 每個人的用法都不一樣,而且變化很多而現在很多專案
都只使用 space 而不使用tab了!
-
也就是:
1)softtabstop>tabstop,无expandtab设置时,
例如:softtabstop=12,tabstop=8,那么当输入一个tab时(softtabstop:实际占用的是12列),最后会变成一个tab(tabstop)加4个空格(8+4),
输入两个tab(2个softtabstop:24列)会变成3个tab(tabstop),也就是说vim或用tabstop+空格来表示,最终你能看到的缩进的列数一定是softtabstop*按的tab键次数。
(ps::set list可以查看tab符号)
2)softtabstop<tabstop,无expandtab时,如果softtabstop=4,tabstop=8,输入一个tab(softtabstop),会变成4个空格(因为不够用一个tabstop表示),
输入两个tab会变成一个tab(8列)。
3)softtabstop=tabstop,无expandtab时,softtabstop等效tabstop。
4)如果设置的expandtab,输入一个tab,将被展开成softtabstop值个空格,如果softtabstop=4,那么一个tab就会被替换成4个空格。
设置expandtab::set expandtab取消expandtab::set noexpandtab查看参数值:set $arg(这里的arg是变量,值就是上面的那些参数),比如::set softtabstop自动缩进:set autoindent
-
vim对于空白符要么是通过全space来实现【expandtab】上面的缩进和\tab,要么最少化\t和space【noexpandtab】。
浙公网安备 33010602011771号