一、簡介
1.vi:Visual Interface,是一種文本編輯器,所謂文本資料是基于字元編碼的檔案,常見的編碼有ASCII編碼,UNICODE編碼等等。
2.Vim是從vi發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等友善程式設計的功能特别豐富,在程式員中被廣泛使用。和Emacs并列成為類Unix系統使用者最喜歡的編輯器。
3.Vim的第一個版本由布萊姆·米勒在1991年釋出。最初的簡稱是ViIMitation,随着功能的不斷增加,正式名稱改成了Vi IMproved。現在是在開放源代碼方式下發行的自由軟體。
二、文本編輯器的種類
1.行編輯器:所謂行編輯器是指一行一行來編輯處理的工具,如sed。
2.全屏編輯器:編輯空間占據整個螢幕,如nano,vi。
三、vim的使用
1.打開檔案
2.文法:vim [OPTION]... [FILE]...
3.vim有以下幾種打開方式:
①vim +#(後接數字):打開檔案後,直接讓光标處于第#行的行首;例如:vim +3 /etc/passed;
②vim +/PATTERN(正規表達式):打開檔案後,直接讓光标處于第一個被PATTERN比對到的行的行首;例如:vim +/^U /etc/fstab;
③vim + file:直接打開file,光标在最後一行;例如:vim + /etc/fstab;
④vim -b file:二進制方式打開檔案;例如:vim -b /bin/cat;
⑤vim -d file1 file2...:比較多個檔案
⑥vim -m file:隻讀方式打開檔案;例如:vim -m /etc/fstab;
4.如果該檔案存在,檔案被打開并顯示内容;如果該檔案不存在,當編輯後第一次存盤時建立它;
四、vim是一個模式編輯器
1.vim三種主要模式:
指令模式(預設):移動光标,剪切/粘貼文本;
插入模式(編輯):修改文本;
擴充指令模式:儲存,退出等;
2.Esc鍵:可以從插入模式轉換到指令模式
五、模式轉換
1.從指令模式----->插入模式,可使用以下指令:
i:在目前光标所在處前面輸入;
I:在目前光标所在行的行首輸入;
a:在目前光标所在處後面輸入;
A:在目前光标所在行的行尾輸入;
o:在目前光标所在行的下方打開一個新行;
O:在目前光标所在行的上方打開一個新行;
2.從插入模式----->指令模式:Esc鍵;
3.指令模式----->擴充模式:直接輸入冒号(:)即可在視窗左下方顯示冒号;
4.從擴充模式---->指令模式:Esc鍵;
5.鎖定和解鎖:ctrl+s,ctrl+q;
六、退出檔案
1.擴充模式:
:q 退出;
:q! 不儲存退出;
:wq 儲存退出;
:x 儲存退出;
:wq! 強制儲存退出;
2.指令模式
ZZ:儲存退出;
ZQ:不儲存退出;
七、擴充模式
1.按冒号(:)進入擴充模式:
r filename:讀檔案内容到目前檔案中;例如 :r /etc/issue;
w filename:将目前檔案内容寫入另一個檔案;例如:w /testdir/f1;
!command:執行指令;例如:!ls;
r!command:讀入指令的輸出;例如:r!ls /root;
八、指令模式光标跳轉
1.字元間跳轉:
h:左
l:右
K:上
j:下
#command:跳轉由#指定的個數的字元;例如:#h,#k;
2.單詞間跳轉:
w:下一個單詞的詞首;
e:目前單詞或下一個單詞的詞尾;
b:目前單詞或前一個單詞詞首;
#command:由#指定一次跳轉的單詞數;例如:3w,3e;
3.目前頁跳轉:
H:頁首;
M:頁中間行;
L:頁底;
4.行首行尾跳轉:
^:跳轉至行首的第一個非空白字元;
0:跳轉至行首;
$:跳轉至行尾;
5.行間移動:
#G:直接跳轉至第#行;
G:最後一行;
1G,gg:第一行;
6.句子間移動:
):下一句;
(:上一句;
7.段落間移動:
}:下一段;
{:上一段;
九、指令模式翻屏操作
ctrl+f:向檔案尾部翻一屏;
ctrl+b:向檔案首部翻一屏;
ctrl+d:向檔案尾部翻半屏;
ctrl+u:向檔案首部翻半屏;
十、指令模式操作
1.字元編輯:
x:删除光标處字元;
#x:删除光标處起始的#個字元;
xp:交換光标所在處的字元及其後面字元的位置;
~:轉換大小寫;
2.替換指令:
r:替換光标所在處字元;
R:切換成REPLACE模式;
3.删除指令:
d:删除指令,可結合光标跳轉字元,實作範圍删除;
d$:删除到行尾;
d^:删除到非空行首;
d0:删除到行首;
dw:删除到下一個單詞的詞首;
de:删除到目前單詞或下一單詞的詞尾;
db:删除到目前單詞或前一單詞的詞首;
#command:删除多個單詞;
dd:删除光标所在的行;
#dd:多行删除;
D:從目前光标位置一直删除到行尾,留白行,等同于d$;
4.複制指令:
y:複制,可結合光标跳轉字元,實作範圍複制;
y$:複制到行尾;
y0:複制到行首;
y^:複制到非空行首;
ye:複制到目前單詞或下一單詞的詞尾;
yw:複制到下一個單詞的詞首;
yb:複制到目前單詞或前一單詞的詞首;
#command:複制多個單詞;
yy:複制行;
#yy:複制多行;
Y:複制整行;
5.粘貼指令:
p:緩沖區存的如果為整行,則粘貼目前光标所在行的下方;否則,則粘貼至目前光标所在處的後面;
P:緩沖區存的如果為整行,則粘貼目前光标所在行的上方;否則,則粘貼至目前光标所在處的前面;
6.改變指令:
c:修改,可結合光标跳轉字元,實作範圍修改;所謂修改就是先删除,再轉換為插入模式;
c$:删除到行尾;
c^:删除到非空行首;
c0:删除到行首;
cb:删除到目前單詞或前一單詞的詞首;
ce:删除到目前單詞或下一單詞的詞尾;
cw:删除到下一個單詞的詞首;
#command:删除多個單詞
cc:删除目前行并輸入新内容;
#cc:删除多行
C:删除目前光标到行尾,并切換成插入模式
7.100iwu [Esc]:含義是粘貼“wu”100次;
8.文法:<start position> <command> <end position>
Command:
y:複制
d:删除
gU:變大寫
gu:變小寫
例如:0y$指令含義是:
0:跳到行首
y:從這裡開始複制
$:複制到本行最後一個字元
十一、擴充模式
1.位址定界
:start_pos,end_pos
#:具體第#行,例如2表示第2行;
#,#:從左側#表示行起始,到右側#表示行結尾;
#,+#: 從左側#表示的行起始,加上右側#表示的行數;例如:2,+3表示2到5行;
.:目前行;
$:最後一行;
.,$-1:目前行到倒數第二行;
%:全文,相當于1,$;
/pat1/,/pat2/:從第一次被pat1模式比對到的行開始,一直到第一次被 pat2比對到的行結束;
#,/pat/:
/pat/,$:
使用方式:後跟一個編輯指令:
d:删除
y:複制
w file:将範圍内的行另存至指定檔案中;
r file: 在指定位置插入指定檔案中的所有内容;
2.查找:
/PATTERN:從目前光标所在處向檔案尾部查找;
?PATTERN:從目前光标所在處向檔案首部查找;
n:與指令同方向;
N:與指令反方向;
3.查找并替換:
s:在擴充模式下完成查找替換操作;
格式:s/要查找的内容/替換為的内容/修飾符;
要查找的内容:可使用模式;
替換為的内容:不能使用模式,但可以使用\1, \2, ... 等後向引用符号;還可以使用“&”引用前面查找時查找到的整個内容;
修飾符:;
i: 忽略大小寫
g: 全局替換;預設情況下,每一行隻替換第一次出現;
gc:全局替換,每次替換前詢問;
注:查找替換中的分隔符/可替換為其它字元,例如:
s@/etc@/var@g;
s#/boot#/#i;
十二、指令模式
1.撤銷更改:
u:撤銷最近的更改;
#u:撤銷之前多次更改;
U:撤消光标落在這行後所有此行的更改;
ctrl+r:重做最後的“撤消”更改 ;
.:重複前一個操作;
n.:重複前一個操作n次;
十三、vim的寄存器
1.有26個命名寄存器和1個無命名寄存器,常存放不同的 剪貼版内容,可以不同會話間共享。
2.用a,b,…,z表示,用“寄存器表示,放在數字和指令之間;
如:3"tyy 表示複制3行到t寄存器中 ;
"tp 表示将t寄存器内容粘貼;
3.未指定,将使用無命名寄存器;
4.有10個數字寄存器,用0,1,…,9表示,0存放最近複制内容,1存放最近删除内容。當新的文本變更和删除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。
十四、vim編輯二進制檔案
步驟:
1.以二進制方式打開檔案:
vim -b binaryfile
2.擴充指令模式下,利用xxd指令轉換為可讀的十六進制:
:%!xxd
3.編輯二進制檔案;
4.擴充指令模式下,利用xxd指令轉換回二進制:
:%!xxd –r
5.儲存退出;
十五、可視化模式
1.允許選擇的文本塊:
v:面向字元;
V:面向行;
ctrl+v:面向塊;
2.可視化鍵可用于與移動鍵結合使用:
w, ) , } ,箭頭等;
3.突出顯示的文字可以被删除,複制,變更,過濾,搜尋/替換等;
十六、多檔案模式
1.格式:vim file1 file2 file3 ...
:next 下一個檔案;
:prev 前一個檔案;
:first 第一個檔案;
:last 最後一個檔案;
:wall 儲存所有;
:qwall 退出所有;
:wqall 儲存所有檔案并退出;
十七、使用多個視窗
1.多檔案分割:
格式:vim -o|-O FILE1 FILE2 ...
-o:水準分割;
-O:豎直分割;
在視窗間切換:ctrl+w,arrow(上下左右方向鍵)
2.單檔案視窗分割:
ctrl+w,s: split,水準分割;
ctrl+w,v: vertical,垂直分割;
ctrl+w,q:取消相鄰視窗;
ctrl+w,o:取消全部視窗;
:wqall 退出;
十八、定制vim的工作特性
1.配置檔案:
全局:/etc/vimrc
個人:~/.vimrc
2.擴充模式:隻對目前vim程序有效:
(1)行号
顯示:set nu;
取消顯示:set nonu;
(2)括号成對比對
比對:set sm;
取消:set nosm;
(3)自動縮進
啟用:set ai;
禁用:set noai;
(4)高亮搜尋
啟用:set hlsearch;
禁用:set nohlsearch;
(5)文法高亮
啟用:syntax on;
禁用:syntax off;
(6)忽略字元大小寫
啟用:set ic;
禁用:ser noic;
(7)檔案格式
啟用Windows格式:set fileformat=dos;
啟用Unix格式:set fileformat=unix;
(8)設定文本寬度
:set textwidth=65
:set wrapmargin=15
3.vim内置幫助
(1):help
(2)Use :q to exit help
4.vimtutor(使用手冊)
本文轉自wzcLINUXER 51CTO部落格,原文連結:http://blog.51cto.com/yacheng0316/1967865,如需轉載請自行聯系原作者