VIM編輯器
Vim章節的內容:
使用vi和vim的三種主要模式
移動光標,進入插入模式
改變、刪除、復制文本
撤銷改變
搜索文檔
vim寄存器
可視化和多窗口
vim幫助
一、文本編輯器種類的簡單介紹:
行編輯器:sed
全屏編輯器:nano;vi;vim(可以理解為vi的升級版)
簡單的圖形編輯器:gedit
圖形版的vim編輯器:gvim
二、了解vim的主要模式:
1、三種主要模式:
命令模式(默認):光標的移動,文本的剪切與粘貼
插入模式:文本內容的修改
擴展命令模式:保存,退出;修改、查找與替換等
注:“ESC”按鍵:退出vim的當前模式,每次的使用都是返回到命令模式下。
2、 模式的轉換:
(1)命令模式>>>插入模式:
i: 在光標所在處輸入
I:在當前光標所在行的行首輸入
a:在光標所在處后面輸入
A:在當前光標所在行的行尾輸入
o:在當前光標所在行的下方打開一個新行
O:在當前光標所在行的上方打開一個新行
(2)插入模式>>>命令模式:
按鍵“ESC”
(3)命令模式>>>擴展命令模式:
冒號(:)
(4)擴展命令模式>>>命令模式:
按鍵“ESC”
注:編輯界面的鎖定與解鎖:(界面鎖定時,在鍵盤上敲擊的字符雖然沒有顯示輸入,但當解鎖時,所輸的字符會自動寫入。)
Ctrl+s 鎖定;Ctrl+q 解鎖
三、Vim的文件打開與關閉
1、man幫助查看vim的格式使用:
vim [options] [file ..]
例:vim name 新建文件并命名為name
注:使用vim打開文件,如果該文件存在,文件被打開并顯示內容;如果該文件不存在,當編輯后第一次存盤時創建它
2、vim打開文件:
+#: 打開文件后,直接讓光標處于第#行的行首
+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
vim + file 直接打開file,光標在最后一行
vim –b file 二進制方式打開文件
vim –d file1 file2… 比較多個文件
vim -m file 只讀打開文件
ex file 或vim –e 直接進入ex模式(擴展模式)
3、vim關閉文件:
(1)擴展模式下關閉文件:
:q 退出
:q! 強制退出,丟棄做出的修改
:wq保存退出
:x保存退出
(2)命令模式下關閉文件:(該方式關閉文件在文件出現修改的情況下不建議使用。)
ZZ: 保存退出
ZQ:不保存退出
四、命令模式下vim的使用:
1、光標的跳轉:
字符間的跳轉 |
左:h |
右:l(小寫L) |
上:k |
下:j |
單詞間的跳轉 |
下一個單詞的詞首:w |
當前或下一個單詞的詞尾:e |
當前或下一個單詞的詞首:b |
由#指定一次跳轉的單詞數:#COMMAND |
當前頁的跳轉 |
頁首:H |
頁中間行:M |
頁底:L |
|
行首、尾的跳轉 |
跳轉到行首第一個非空白字符:^ |
跳轉到行首(真正的行首):0 |
跳轉到行尾:$ |
|
行間的跳轉 |
跳轉至由#指定的行:#G (擴展命令模式下:#) |
跳轉到最后一行:G |
跳轉到第一行:1G或gg |
|
句間的跳轉 |
下一句: ): |
上一句: (: |
注:以.為句間跳轉 |
|
段落間的跳轉 |
下一段: }: |
上一段: {: |
注:以較大的空行為一段跳轉 |
2、翻屏操作:
向文件尾部翻一屏 |
向文件首部翻一屏 |
向文件尾部翻半屏 |
向文件首部翻半屏 |
Ctrl+f |
Ctrl+b |
Ctrl+d |
Ctrl+u |
3、字符的編輯與替換命令:
字符編輯 |
x: 刪除光標處的字符; |
#x: 刪除光標處起始的#個字符 ( 注:最多只能刪除到行尾) |
|
xp: 交換光標所在處的字符及其后面字符的位置 (注:相當于剪切后粘貼,前后位置互換。) |
|
~:轉換大小寫 |
|
替換命令 |
r: 替換光標所在處的字符 (注:r后面跟上輸入需要替換掉后的內容。) |
R:切換成REPLACE模式 (注:當切換模式后,輸入什么就替換什么,當到了行尾后就繼續輸入。ESC退出回到命令模式。) |
4、命令模式下vim的復制、刪除、改變、粘貼:
復制命令 |
刪除命令(從光標處開始) |
改變命令(從光標處開始) |
|||
y |
復制,單一字符的復制 |
d |
刪除命令,可結合光標跳轉字符,實現范圍刪除 |
c |
修改單個字符后(相當于刪除后)切換成插入模式 |
y$ |
從光標處到行尾的復制 |
d$ |
刪除到行尾 |
c$ |
刪除到行尾,切換成插入模式 |
y0 |
從光標處到非空行首的復制 |
d^ |
刪除到非空行的行首 |
c^ |
刪除到非空行的行首,切換成插入模式 |
y^ |
從光標處到行首的復制 |
d0 |
刪除到行首 |
c0 |
刪除到行首,切換成插入模式 |
ye |
從光標處到下一個單詞詞首的復制 |
de |
刪除到下一個單詞的詞首 |
ce |
刪除到下一個單詞的詞首,切換成插入模式 |
yw |
從光標處到當前單詞的詞尾或者下一個單詞詞尾的復制 |
dw |
刪除到當前單詞的詞尾或者下一個單詞的詞尾 |
cw |
刪除到當前單詞的詞尾或者下一個單詞的詞尾,切換成插入模式 |
yb |
從光標處到當前單詞的詞首或者前一個單詞詞首的復制 |
db |
刪除到當前單詞的詞首或者前一個單詞的詞首 |
cb |
刪除到當前單詞的詞首或者前一個單詞的詞首,切換成插入模式 |
#COMMAND |
如:3yb,將光標處到前三個單詞之間進行復制 |
#COMMAND |
如:5dw,往行尾刪除5個單詞 |
#COMMAND |
如:3ce,光標處往行尾刪除3個單詞, ,切換成插入模式 |
yy |
復制光標所在的行 |
dd |
刪除光標所在行 |
cc |
刪除當前行并輸入新內容 |
#yy |
復制多(#)行 |
#dd |
多(#)行刪除 |
#cc |
多(#)行刪除并輸入新內容 |
Y |
復制整行 |
D |
從當前光標位置一直刪除到行尾,留空行,等同于d$ |
C |
刪除當前光標到行尾,并切換成插入模式 |
粘貼命令:
p(小寫):緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面
P(大寫):緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
5、vim的特殊使用以及命令的撤銷更改:
(1)vim的特殊使用:
A、100igogo [ESC] :粘貼“gogo”100次
B、<start position><command><end position>
Command:y 復制、d 刪除、gU變大寫、gu變小寫
例如0y$ 命令意味著:
0 →先到行頭
y →從這里開始拷貝
$ →拷貝到本行最后一個字符
ye 從當前位置拷貝到本單詞的最后一個字符
(2)vim命令撤銷:
u撤銷最近的更改
#u撤銷之前多次更改
U撤消光標落在這行后所有此行的更改
按Ctrl-r重做最后的“撤消”更改
. 重復前一個操作
n.重復前一個操作n次
6、可視化使用(可視化模式):允許選擇的文本塊
(1)v面向字符 :在命令模式下,按c鍵后,使用方向鍵可以逐個字符進行選定,如下圖:
(2)V面向行 :在命令模式下,按C(大寫)鍵后,使用方向鍵可以逐個行塊進行選定,如下圖:
(3)Ctrl+v 面向塊 :如下圖,先往下選定所需要的行后,再往右進行選定,可實現塊選定。
(4)可視化鍵可用于與移動鍵結合使用:w,),},箭頭等
突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等
五、擴展命令模式下的vim使用:
1、地址定界:
/pat1/,/pat2/ :從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
#,/pat/ :從#行開始到被模式空間匹配到結束
/pat/,$ :從模式空間匹配到開始,一直到文本的尾部結束
使用方式:后跟一個編輯命令
d file:將指定范圍的內容刪除
y file:將指定范圍的內容復制
w file:將范圍內的行另存至指定文件中
r file:在指定位置插入指定文件中的所有內容
如下圖:讀取他處的文本內容寫入
如下圖:將編輯后的文本內容另存指定的路徑和重新命名文本名存放
如下圖:查看另存的新文本內容
2、擴展命令模式下vim的查找:
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向
3、擴展命令模式下vim的查找與替換:
(1)格式:s/要查找的內容/替換為的內容/修飾符
查找替換中的分隔符/可替換為其它字符,例如
s@/etc@/var@g ;s#/boot#/#i
(2)查找內容、替換內容及修飾符的注意點:
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫
g: 全局替換;默認情況下,每一行只替換第一次出現
gc:全局替換,每次替換前詢問
4、vim編輯二進制文件
(1)以二進制方式打開文件:
vim –b binaryfile
(2)擴展命令模式下,利用xxd命令轉換為可讀的十六進制
:%!xxd
(3)編輯二進制文件
(4)擴展命令模式下,利用xxd命令轉換回二進制
:%!xxd –r
(5)保存退出
5、vim的寄存器:
(1)了解命名寄存器和數字寄存器:(未指定,將使用無命名寄存器)
有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。用a,b,…,z來做“寄存器”名稱。
有10個數字寄存器,用0,1,…,9表示,0存放最近復制內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。但數字寄存器不能在不同會話間共享。
(2)使用格式及例子:
使用格式:#” 寄存器名稱 命令
如:3"tyy 表示復制3行到t寄存器中
"tp 表示將t寄存器內容粘貼
6、多文件編輯下,擴展命令模式的vim使用:
vim FILE1 FILE2 FILE3 …
:next 下一個
:prev前一個
:first 第一個
:last 最后一個
:wall 保存所有
:qall退出所有
:wqall
六、vim的命令模式下的多窗口及定制工作特性:(在窗口間切換:Ctrl+w, 再按箭頭進行切換窗口)
1、多窗口分割:
(1)多文件分割
vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
(2)單文件窗口分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相鄰窗口
ctrl+w,o:取消全部窗口
:wqall退出
2、vim工作特性定制:
(1)配置文件:永久有效
全局:/etc/vimrc
個人:~/.vimrc
擴展模式:當前vim進程有效
3、工作特性的啟用與取消:
顯示 |
取消顯示 |
|
行號 |
set number, 簡寫為set nu |
set nonumber, 簡寫為set nonu |
括號成對配對 |
set showmatch, 簡寫為set sm |
set nosm |
自動縮進 |
set ai |
set noai |
高亮搜索 |
set hlsearch |
set nohlsearch |
語法高亮 |
syntax on |
syntax off |
忽略字符的大小寫 |
set ic |
set noic |
文件格式 |
fileformat=unix |
fileformat=dos |
設置文本寬度 |
:set textwidth=65 (vimonly) 從左邊算起第65個字符自動換行。; :set wrapmargin=15 從右邊開始算起15個字符自動換行。 |
|
幫助 |
:help option-list ; :setor:set all (在help里面使用該命令查看) |
4、了解更多的help:
vi/vim內置幫助( :help ;:helptopic ; Use:qto exit help ; ?Vimtutor )
練習:
1、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符
:%s@^[[:space:]]\+@@
2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號
:%s@^[[:space:]]\+@#&@
作業:
1、 如何設置tab縮進為4個字符?
:set ts=4
2、 復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;
:%s@/etc/sysconfig/init@/var/log@
3、 刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;
:%s@#@@
原創文章,作者:Aaron_wang,如若轉載,請注明出處:http://www.www58058.com/33238