Vim編輯器的操作方式
1、Vim編輯器
Vim編輯器是一種模式化的純文字編輯器,文字編輯種類分為:行編輯器(sed)、全屏編輯器(nano, vi)、KDE上的編輯器(KWrite, Kate)。
2、Vim的基本模式
Vim的基本模式有:編輯模式(命令模式)、輸入模式、末行模式(內建的命令列介面)。 模式轉換: 編輯模式:預設模式; 編輯模式 --> 輸入模式: i:insert, 在游標所在處輸入; a: append,在游標所在處後方輸入; o:在游標所在處的下方開啟一個新行; I:在游標所在行的行首輸入; A:在游標所在行的行尾輸入; O:在游標所在處的上方開啟一個新行; 輸入模式 --> 編輯模式:ESC 編輯模式 --> 末行模式:: 末行模式 --> 編輯模式:ESC
刪除10~100行: :10,100d
行首顯示行號 :set nu
去掉行號 :set nonu
3、開啟和關閉檔案
(1)開啟檔案
# vim [options] [file ..]
+#:開啟檔案後,直接讓游標處於第#行的行首;
+/PATTERN:開啟檔案後,直接讓游標處於第一個被PATTERN匹配到的行的行首;
+:自動處於尾行行首;
(2)關閉檔案
ZZ:儲存並退出;編輯模式下輸入;
:q 退出;
:q! 強制退出,不儲存此前的編輯操作;
:wq 儲存並退出;
:w, :q 分開操作也可以實現儲存並退出;
:x 儲存並退出;
:w /PATH/TO/SOMEFILE 把做出的修改儲存至指定檔案中,即另存為;
4、Vim的游標跳轉
(1)字元間跳轉
h:左
j:下
k:上
l:右
#COMMAND
:跳轉由#指定的個數的字元;編輯模式;
(2)單詞間跳轉
w:下一個單詞的詞首;
e:當前或後一個單詞的詞尾;
b:當前或前一個單詞的詞首;
#COMMAND
:跳轉由#指定的個數的單詞;編輯模式;
(3)行首行尾跳轉
^:跳轉至行首的第一個非空白字元;tab鍵不算,即如果行首為tab+space+abc,則跳至a;
0:跳轉至行首;tab鍵不算,即如果行首為tab+space+abc,則跳至space;
$ :跳轉至行尾;tab鍵不算,即如果行尾為abc+space+tab,則跳至space;
(4)行間跳轉
#G:跳轉至由#指定的行;
1G, gg:第一行;
G:最後一行;
(5)句間跳轉
) 下一句
( 前一句
(6)段間跳轉
} 下一段
{ 前一段
(7)翻屏
Ctrl+f:向檔案尾翻一屏
Ctrl+b:向檔案首部翻一屏
Ctrl+d:向檔案尾部翻半屏
Ctrl+u:向檔案首部翻半屏
Enter:按行向後翻
5、vim的編輯命令
(1)字元編輯
x:刪除游標所在處的字元;
#x:刪除游標所在處起始的#個字元;
xp:交換游標所在處的字元與其後面的字元的位置;
(2)替換命令(replace)
r:替換游標所在處的字元:rCHAR;
(3)刪除命令
d:刪除命令,可結合游標跳轉字元,實現範圍刪除;
d$ :刪除當前游標所在處至行尾的內容;
d^:刪除當前游標所在處至行首的內容;
dw:刪除當前游標所在處至下一個單詞詞首的內容;
de:刪除當前游標所在處至當前詞尾或下一個詞尾的內容;
db:刪除當前游標所在處至當前詞首或前一個詞首的內容;
#COMMAND:3dw
:向後刪3個單詞
dd:刪除游標所在處的行;
#dd:刪除游標所在處的行起始的共#行(包括當前行);
(4)貼上命令(p, put, paste):剛剛刪除的內容可以貼上在其他位置;
p:緩衝區中的內容如果為整行,則貼上在當前游標所在行的下方;否則,則貼上至當前游標所在處的後方;
P:緩衝區中的內容如果為整行,則貼上在當前游標所在行的上方;否則,則貼上至當前游標所在處的前方;
(5)複製命令(yank, y):可以使用p命令到處貼上;
y:複製,工作行為相似於d命令:y$ ,y^,y0,ye,yw,yb
#COMMAND
yy:複製一整行
#yy:複製#行
(6)改變命令(change, c):
編輯模式 --> 輸入模式,實現刪除操作:c$,c^,c0,cb,ce,cw
#COMMAND
cc:刪除游標所在的行,並轉換為輸入模式;
#cc:刪除#行
(7)撤銷(undo)操作:
u:撤銷此前的操作;
#u:撤銷此前的#個操作,最多50個操作,被儲存在緩衝區中;
撤銷此前的撤銷(恢復此前的撤銷操作 recovery):Ctrl+r;
vim自帶的練習教程:vimtutor
6、vim末行模式:內建的命令列介面
(1)地址定界
:start_pos[,end_pos]
#:特定的第#行,例如5即第5行; .:當前行; $ :最後一行; #,#:指定行範圍,左側為起始行,右側為結束行; #,+#:指定行範圍,左側為起始行絕對編號,右側為相對左側行號的偏移量,例如:3,+7; .,$ -1:從當前行到倒數第二行; 1,$ :從第一行到最後一行,全文; %:全文 /pattern/:從游標所在處起始向檔案尾部第一次被模式所匹配到的行; /first/,$ 從游標所在處開始first第一次匹配到的行到檔案尾部; /pat1/,/pat2/:從游標所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行; 可同編輯命令一同使用,實現編輯操作: d刪除地址定界框定的所有內容; y複製地址定界框定的所有內容; c修改地址定界框定的所有內容; w /PATH/TO/SOMEFILE:將範圍內的文字儲存至指定的檔案中; r /PATH/FROM/SOMEFILE:將指定的檔案中的文字讀取並插入至指定位置; 5r /root/test.txt 將該檔案的第5行游標所在處插入/root/test.txt檔案 (2)查詢 /PATTERN:從當前游標所在處向檔案尾部查詢能夠被當前模式匹配到的所有字串; ?PATTERN:從當前游標所在處向檔案首部查詢能夠被當前模式匹配到的所有字串; n:下一個,與命令方向相同; N:上一個,與命令方向相反; (3)查詢並替換 s:末行模式的命令;使用格式: s/要查詢的內容/替換為的內容/修飾符; 要查詢的內容:可使用正則表示式;可以使用模式,基於模式進行文字匹配; 替換為的內容:不能使用正則表示式,但可以引用; 如果“要查詢的內容”部分在模式中使用分組符號:在“替換為的內容”中使用後向引用; 如果“要查詢的內容”部分在模式中沒有使用分組符號,也可直接引用查詢模式匹配到的全部文字,要使用&符號; 修飾符: i:忽略大小寫; g:全域性替換,意味著一行中如果匹配到多次,則均替換; 可把分隔符替換為其它非常用字元: [email protected]@@ s###
:1,20s/this/This/g 將1到20行內的每一次this出現都替換成This;
:1,20/this/THIS/ig 查詢時不區分字元大小寫,並進行全域性替換;
:%s/\/cgroup\/systemd/\etc\/sysconfig/g 路徑中的/要做轉義,以區別於s的分隔符;
:%[email protected]/cgroup/[email protected]/etc/[email protected] 將分隔符/替換為@
:%[email protected]\<t\([[:alpha:]]\+\)\>@T\[email protected] 當文中單詞詞首為t的單詞替換成詞首為T
:%[email protected]\<t[[:alpha:]]\+\>@&[email protected] 將文中每個以t開頭的單詞後面都加上er
:%[email protected]^#@@ 將文中行首的#去掉
%[email protected]\<t\([[:alpha:]]\+\)\>@T\[email protected]
%[email protected]\<t[[:alpha:]]\+\>@&[email protected]
7、vim的多檔案功能
vim FILE1 FILE2 ...
(1)在檔案間切換: :next 下一個; ;:prev 上一個 :first 第一個; :last 最後一個 ; (2)退出所有檔案: :wqall 儲存所有檔案並退出; :wall 儲存所有檔案; :qall 退出所有檔案; (3)多視窗: -o:水平分割視窗; -O:垂直分割視窗; 在視窗間切換:Ctrl+w, ARROW(向上向下向左向右箭頭),當前所在視窗標題加粗高亮顯示; (4)單個檔案也可以分割為多個視窗進行檢視: Ctrl+w, s:水平分割視窗 Ctrl+w, v:垂直分割視窗 wq和q:退出當前視窗 wqall和qall:退出所有視窗
8、定製vim的工作特性
注意:在末行模式下的設定,僅對當前vim程序有效,要想永久有效,需要如下配置: 全域性:/etc/vimrc 使用者個人:~/.vimrc (有可能預設不存在,需要自己建立)
(1)行號 顯示:set number, 簡寫為set nu 取消顯示:set nonumber, 簡寫為set nonu (2)括號匹配高亮 匹配:set showmatch, set sm 取消:set noshowmatch, set nosm (3)自動縮排 啟用:set autoindent, set ai 禁用:set noautoindent, set noai (4)高亮搜尋 啟用:set highlightsearch, set hlsearch 禁用:set nohighlightsearch, set nohlsearch (5)語法高亮 啟用:syntax on 禁用:syntax off (6)忽略字元大小寫 啟用:set ignorecase, set ic 禁用:set noignorecase, set noic
9、獲取幫助
:help
:help subject
例如,獲取vim下set命令的幫助::help set