1. vi的介紹
基本上vi共分為三種模式:
指令模式(command mode)
以vi打開一個檔案就直接進入指令模式。在這個模式中,可以使用[上下左右]按鍵來移動光标,删除字元來處理檔案内容,也可以複制粘貼檔案資料。
插入模式(insert mode)
在指令模式下輸入:[i Ia A o O]等任何一個字母就會進入插入模式。這時候就可以進行檔案編輯工作了。
i:在目前光标所在處前輸入。
I:在目前光标所在處行首輸入。
a:在光标所在處後輸入
A:在光标所在處行尾輸入
o:在光标所在處的下一行增加一個空白行
O:在光标所在處的上一行增加一個空白行
指令行模式(command-line mode)
在指令模式當中,輸入[:/ ?]任何一種,就可以進行指令行模式。
那麼如何退出vi呢?
如果是在插入模式,那麼要敲入【ESC】鍵,輸入
:q!強制退出,即不儲存退出
:wq儲存退出
:wfilename 儲存檔案
:x儲存并退出
如果是在指令行模式下,直接輸入ZZ,即為儲存退出.
2. vi使用
1. 按鍵說明
指令模式下的按鍵說明:
移動光标
h或 向左箭頭鍵 光标向左移動一個字元
j 或 向下箭頭鍵 光标向下移動一個字元
K或 向上箭頭鍵 光标向上移動一個字元
l 或 向右箭頭鍵 光标向右移動一個字元
如果想要進行多次移動,例如向下移動30列,可以使用30j的組合按鍵
【Crtl】+【f】 螢幕向下移動一頁,相當于【page Down】按鍵
【Crtl】+【b】 螢幕向上移動一頁,相當于【page up】按鍵
【Ctrl】+【d】 螢幕向下移動半頁
【Ctrl】+【u】 螢幕向上移動半頁
n【space】 光标向右移動n個字元
0 移到光标所在行的行首
$ 移到光标所在行的行尾
G 移動這個檔案的最後一行
nG 移動到這個檔案的第n行
gg 移動到這個檔案的第一行
N【enter】 光标向下移動n行
w 跳至下一個單詞的詞首
b 跳至前一個單詞的詞首
e 跳至目前或下一個單詞的詞尾
搜尋與取代
/key 向光标之下尋找key這個關鍵字
?key 向光标之上尋找key這個光鍵字
使用 /key 配合n或N是非常有幫助的。
n 向下搜尋下一個關鍵字
N 向上搜尋下一個關鍵字
:n1,n2s/word1/word2/g 取代
:1,$s/word1/word2/g 從第一行到最後一行尋找word1,并用word2取代
s/ / /gci
g:鎖定所有查找的内容
c:人機互動
i:忽略大小寫
其中,為了避免轉義的問題,/可以用@,#等符号來代替。
删除,複制與粘貼
X,x 在一行中,x為向後删除一個字元,X為向前删除一個字元
#x #為數字,連續向後删除#個字元
dd 删除光标所在的一行
#dd 删除光标所在向下#行
d0 d^ d$ dG等
yy 複制光标所在的行
#yy 複制光标所在的向下#行
P 粘貼
u 撤銷
【Crtl】+【r】 撤銷此前的撤銷
2. vim可視化模式
在指令模式下輸入v,可進行手動全選模式。
V:標明光标所在的目前行
標明之後,之前的編輯指令都可以使用
3. 打開多個檔案
:next 下一個
: prev 上一個
:first 第一個
:last 最後一個
為了友善比較,可以使用–o或-O選項
vim –o :橫屏比較
vim –O:豎屏比較
怎樣在兩個檔案中移動光标呢?
橫屏比較 使用【Crtl】+w 上下箭頭
豎屏比較 使用【Crtl】+w 左右箭頭
在同一個檔案中,可以使用分屏來比較不同之處
使用【Crtl】+w,s 水準分割
使用【Crtl】+w,v 垂直分割
4. vim的環境設定參數
:set nu 設定行号
:set nonu 取消行号
:set ai 自動縮進
:set ic 忽略大小寫
:set sm 顯示與之比對的符号
:syntax on 文法高亮
:set hlsearch 搜尋高亮
:set autoindent 自動縮進