vim編程時,經常需要對代碼進行縮進處理,以增加程序的可讀性和后期的代碼維護.
可以采用多種方式達到縮進的目的:
???? 1) 命令模式(command mode)
???? 2) Visual模式(visual mode)
???? 2) 輸入模式(entry mode)
???? 3) 末行模式(last-line mode)
???? 4) 在/etc/vimrc有給予vim的環境配置, 一般地, 個性化的定制vim的功能,建議在~/.vimrc文件中進行配置(一般用戶可自行創建該文件).
?
命令模式:
>> 當前行增加一個單位縮進????????????????????? (即多少個空格為一個單位,為配置文件參數shiftwidth的值)
<< 當前行減少一個單位縮進????????????????????? (可以連續多次縮進多個單位長度)
#>> 當前行增加#個單位縮進
#<< 當前行減少#個單位縮進???????????????????? (6>>)
== 為自動排版,也可減少一個單位縮進
?
Visual模式:(在command mode下Ctrl + V切換)
???? 可將選定的單行或多行:
???????? > 增加一個單位縮進?????????????
???????? < 減少一個單位縮進????????????????????????????
???????? #> 增加#單位縮進?????????????
???????? #< 減少#單位縮進
?
輸入模式:
???????? Ctrl+T增加一個單位縮進
???????? Ctrl+D減小一個單位縮進
?
末行模式:
?????? startline, endline >??????? 將startline至endline增加一個單位縮進???? (經驗證,貌似不能出現#>)
?????? startline, endline <??????? 將startline至endline減少一個單位縮進
?
在配置文件~/.vimrc中添加個性化自動縮進的環境配置參數:
一般有以下的幾種:
autoindent: 新增加的行和前一行有相同的縮進形式;
smartindent: 1)每一行都和前一行有相同的縮進量;? ?
?????????????????? 2)當遇到右花括號"}"時,則取消了縮進形式;
?? ??? ??????????? 3)如果一行是以#開頭的,則不縮進;
?? ??? ??????????? 4)此外還增加了識別C語言關鍵字的功能;
cindent:?? 這是C語言的縮進形式,采用這樣的縮進方式的程序語言有:C,C++,Java等;
????????????? 當采用這種縮進格式時,vi就會自動的采用標準的C語言形式.
先進性:?? autoindent < smartindent? < cindent
可以用如下命令進行縮進形式的設置:(可在末行模式下操作)
set autoindent??????? 或 set ai
set smartindent????? 或 set si
set cindent???????????? 或 set ci
關閉縮進時:? set noautoindent?
???????????????? ...
與縮進(indent)相關的參數有:shiftwidth、tabstop、softtabstop、expandtab.
shiftwidth 操作(<<和>>)時縮進一個單位;
tabstop 一個tab鍵所占的空格數,linux 內核代碼建議每個tab占用8個空格;
softtabstop 敲入tab鍵時實際占有的空格數;
expandtab 輸入tab時自動將其轉化為空格;
? 說明tabstop、softtabstop、expandtab之間的關系:
1)三者均用于定義一次tab鍵所代表的空格數;
2)當定義了softtabstop時,tabstop和expandtab均以softtabstop為準;
3)即當softtabstop=4? 無論tabstop和expandtab為何值,最終都為4個空格作為一個單位.
????? vim ~/.vimrc
???