Vim 縮進(jìn)總結(jié)
在linux上編輯文件時,有時候從別的地方copy過來的代碼要縮進(jìn),如果一行一行的搞,忒麻煩耗時了,下面是自己使用中不同模式下的一些縮進(jìn)快捷方法:
一、 normal 模式下
>> 按2次> 當(dāng)前行增加縮進(jìn)
<< 按2次< 當(dāng)前行減少縮進(jìn)
或者
:10,100>
第10行至第100行縮進(jìn)
:20,80<
第20行至第80行反縮進(jìn)
二、 Visual 模式下
normal 模式下按v 即進(jìn)入VISUAL模式,可選擇多行
選擇好需要縮進(jìn)的行后,按一次大于號’>’縮進(jìn)一次,按’6>’縮進(jìn)六次,按’<’回縮
三、INSERT 模式下
CTRL+SHIFT+T:當(dāng)前行增加縮進(jìn)
CTRL+SHIFT+D:當(dāng)前行減少縮進(jìn)
四、 縮進(jìn)相關(guān)的參數(shù)
默認(rèn)vim的縮進(jìn)寬度為8個空格
與縮進(jìn)相關(guān)的參數(shù)有shiftwidth、tabstop、softtabstop、expandtab。
shiftwidth reindent 操作(<<和>>)時縮進(jìn)的列數(shù)(這里的一列相當(dāng)于一個空格)
tabstop 一個tab鍵所占的列數(shù),linux 內(nèi)核代碼建議每個tab占用8列
softtabstop 敲入tab鍵時實際占有的列數(shù)。
expandtab 輸入tab時自動將其轉(zhuǎn)化為空格
softtabstop大于tabstop時,且沒有設(shè)置expandtab時, 例如:softtabstop=12,tabstop=8,
那么當(dāng)輸入一個tab時(softtabstop:實際占用的是12列),最后會變成一個tab(tabstop)加4個空格(8+4),
輸入兩個tab(2個softtabstop:24列)會變成3個tab(tabstop),也就是說vim或用tabstop+空格來表示,最終你能看到的縮進(jìn)的列數(shù)一定是softtabstop*按的tab鍵次數(shù)。(ps::set
list 可以查看tab符號)
softtabstop小于tabstop且沒有設(shè)置expandtab時,如果softtabstop=4,tabstop=8,輸入一個tab(softtabstop),會變成4個空格(因為不夠用一個tabstop表示),輸入兩個tab會變成一個tab(8列)。 如果softtabstop等于tabstop,而且expandtab沒有設(shè)置,softtabstop與tabstop就沒什么區(qū)別了。
如果設(shè)置的expandtab,輸入一個tab,將被展開成softtabstop值個空格,如果softtabstop=4,那么一個tab就會被替換成4個空格。
設(shè)置expandtab:
:set expandtab
取消expandtab:
:set noexpandtab
自動縮進(jìn)
:set autoindent 回車后自動縮進(jìn)
通常Java的配置方式是:
:set softtabstop=4 shiftwidth=4 expandtab
Linux kernel的配置方式:
:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab查看參數(shù)值:
:set $arg(這里的arg是變量,值就是上面的那些參數(shù)),比如:set softtabstop