vim編輯器
vi:Vistual Interface,是一種文本編輯器,所謂文本編輯器就是基于字符編碼的文件,常見的編碼有ASCLL編碼,UNICODE編碼。
vim:即vi IMproved:vi的增強版,可以使用顏色或者底線等方式來顯示一些特殊信息,是模式化的編輯。
文本編輯器的種類
行編輯器:所謂行編輯器就是一行一行來編輯處理的工具,如sed
全屏編輯器:編輯空間占據整個屏幕,如nano,vi
vim工作的三種模式
編輯模式:也叫命令模式,鍵盤操作常被理解為編輯命令,如移動光標,剪切/粘貼文本。
輸入模式:在文本文件中進行內容輸入
末行模式:vim內置的命令行接口,執行vim的內置命令,如保存,退出等。
vim的使用
打開文件
#vim [OPTION]…FILE…
+#:打開文件后,直接讓光標處于第#行的行首 +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首 vim + file:直接打開file,光標在最后一行 vim -b file:二進制方式打開文件 vim -d file1 file2...:比較多個文件 vim -m file 只讀打開文件
如果該文件存在,文件被打開并顯示內容
如果該文件不存在,當編輯后第一次存盤時創建它
模式轉換
1、ESC鍵:可以從輸入模式轉到編輯模式
2、從輸入模式轉到編輯模式,可以使用下面的命令:
i:在光標所在的前方轉換為輸入模式 a:在光標所在的后方轉換為輸入模式 o:在光標所在行的下方新建一個空白行并轉換為輸入模式 I:在光標所在的行的行首輸入 A:在光標所在的行的行尾輸入 O:在光標所在行的上方新建一個空白行
3、編輯模式轉到末行模式,直接輸入冒號(:)即可在窗口的左下方顯示冒號:
4、末行模式到編輯模式:敲擊ESC鍵
5、輸入到編輯到末行:輸入模式不能直接轉換到末行模式
退出文件
需要先切換至編輯模式之后才能退出,在切換至編輯模式之后鍵入一下命令即可進行相關操作
:q 退出 :q! 不保存退出 :wq 保存退出 :x 保存退出 :wq!強制保存退出 :ZZ 編輯模式保存退出的快捷鍵 :ZQ 編輯模式不保存退出的快捷鍵 :w /PATH/TO/SOMEWHERE 將當前文件內容寫入另一個文件 :r /PATH/TO/SOMEWHER 讀文件內容到當前文件中 r!command 把命令的標準輸出讀入文件
命令模式光標跳轉
字符間跳轉:
h: 左l: 右j: 下k: 上 #COMMAND:跳轉由#指定的個數的字符;
單詞間跳轉:
w:下一個單詞的詞首 e:當前或下一單詞的詞尾 b:當前或前一個單詞的詞首 #COMMAND:由#指定一次跳轉的單詞數
當前頁跳轉:
H:頁首M:頁中間行L:頁底
行首行尾跳轉:
^: 跳轉至行首的第一個非空白字符; 0: 跳轉至行首 $: 跳轉至行尾
行間移動:
#G、擴展模式:# :跳轉至由#指定行 G:最后一行 1G, gg: 第一行
句間移動:
):下一句(:上一句
段落間移動:
}:下一段{:上一段
命令模式翻屏操作:
Ctrl+f: 向文件尾部翻一屏 Ctrl+b: 向文件首部翻一屏 Ctrl+d: 向文件尾部翻半屏 Ctrl+u:向文件首部翻半屏
命令模式操作
字符編輯:
x: 刪除光標處的字符; #x: 刪除光標處起始的#個字符 xp: 交換光標所在處的字符及其后面字符的位置 ~:轉換大小寫
替換命令(r, replace):
r: 替換光標所在處的字符 R:切換成REPLACE模式
刪除命令:
d: 刪除命令,可結合光標跳轉字符,實現范圍刪除; d$: 刪除到行尾 d^:刪除到非空行首 d0:刪除到行首 dw:刪除下一個單詞的詞首 de:刪除下一個單詞的詞尾 db:刪除當前或前一個單詞的詞首 #COMMAND dd: 刪除光標所在的行 #dd:多行刪除 D:從當前光標位置一直刪除到行尾,留空行,等同于d$
復制命令(y, yank):
y: 復制,行為相似于d命令 y$:復制從光標處到行尾 y0:復制從光標處到行首(絕對行首) y^:復制從光標處到行首 yy:復制行 #yy: 復制多行 Y: 復制整行 #COMMAND
粘貼命令(p, paste):
p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面 P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
改變命令(c, change):
c: 修改,結合光標跳轉字符使用,修改跳轉范圍內的字符
w,b,e,$,^,0
所為的修改就是先刪除,再轉換為輸入模式
cc:刪除當前行并輸入新內容 #cc:刪除指定行并輸入新內容 C:刪除當前光標到行尾,并切換成插入模式
地址定界:
:start_pos,end_pos #: 具體第#行,例如2表示第2行; #,#: 從左側#表示行起始,到右側#表示行結尾 #,+#: 從左側#表示的行起始,加上右側#表示的行數 :2,+3 表示2到5行 .: 當前行 $: 最后一行 .,$-1 當前行到倒數第二行 %:全文, 相當于1,$ /pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束 #,/pat/ 從指定行開始,到第一次被pat匹配到的行結束 pat/,$ 從第一次被pat模式匹配到的行開始,到最后一行結束 使用方式:后跟一個編輯命令 d:刪除所匹配的內容 y:復制所匹配的內容 w file: 將范圍內的行另存至指定文件中 r file:在指定位置插入指定文件中的所有內容
查找:
/PATTERN:從當前光標所在處向文件尾部查找 n:與命令同方向 N:與命令反方向 ?PATTERN:從當前光標所在處向文件首部查找 n:與命令反方向 N:與命令同方向
查找并替換
s: 在擴展模式下完成查找替換操作
格式:s/要查找的內容/替換為的內容/修飾符
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫 g: 全局替換;默認情況下,每一行只替換第一次出現 gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換為其它字符,例如s@/etc@/var@g s#/boot#/#i
撤銷更改
u:撤銷最近的更改 #u:撤銷之前多次更改 U:撤消光標落在這行后所有此行的更改 按Ctrl-r重做最后的“撤消”更改 .:重復前一個操作 n.:重復前一個操作n次
可視化模式
允許選擇的文本塊
v面向字符
V面向行
ctrl-v 面向塊
可視化鍵可用于與移動鍵結合使用:
w,),},箭頭等
突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等
多文件模式
vim FILE1 FILE2 FILE3 …
:next 下一個 :prev前一個 :first 第一個 :last 最后一個 :wall 保存所有 :qall退出所有 :wqall
使用多個“窗口”
多文件分割
vim -o|-O FILE1 FILE2 ... -o: 水平分割 -O: 垂直分割 在窗口間切換:Ctrl+w, Arrow
單文件窗口分割:
Ctrl+w,s: split, 水平分割 Ctrl+w,v: vertical, 垂直分割 ctrl+w,q:取消相鄰窗口 ctrl+w,o:取消全部窗口 :wqall退出
定制vim的工作特性
配置文件:永久有效
全局:/etc/vimrc
個人:~/.vimrc
擴展模式:當前vim進程有效
(1) 行號 顯示:set number, 簡寫為set nu 取消顯示:set nonumber, 簡寫為set nonu (2) 括號成對匹配 匹配:set showmatch, 簡寫為set sm 取消:set nosm (3) 自動縮進 啟用:set ai 禁用:set noai (4) 高亮搜索 啟用:set hlsearch 禁用:set nohlsearch (5) 語法高亮 啟用:syntax on 禁用:syntax off (6) 忽略字符的大小寫 啟用:set ic 不忽略:set noic (7) 文件格式 啟用:fileformat=unix 不忽略:fileformat=dos (8) 設置文本寬度 :set textwidth=65 (vimonly) :set wrapmargin=15 :help option-list :setor:set all
練習
1、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符
%s@^[[:space:]]\+@@g
2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號
%s@^[[:space:]]\+@#&@g
3、如何設置tab縮進為4個字符?
set ts=4
4、復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;
%s@/etc/sysconfig/init@/var/log@g
5、刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;
%s@^#[[:space:]]\{1,\}@@g
原創文章,作者:xiaoqing,如若轉載,請注明出處:http://www.www58058.com/34723