概述:
在之前的篇章中,我們介紹了一些文本的處理工具,如grep、sed、cut、sort等,但是那些工具的側重點都在于有了現成的文本之后,對現有的文本進行一定條件的加工處理后,滿足我們進一步對數據的要求。但是目前為止,還沒有接觸一款專業用來編輯文本的工具,本篇就來介紹一下Linux系統上自帶的專業用來文本編輯的上古神器–vim
本篇將分為以下幾個部分來為大家呈現vim的強大功能:
1、vim簡介及模式切換
2、命令模式操作技巧介紹
3、擴展命令模式(末行模式)操作技巧介紹
4、其他模式簡介
5、vim運行環境定制
第一章 vim簡介及模式切換
vim是一款Linux系統上的文本編輯工具,類似于windows上的txt文本編輯器,vim是早期vi的升級版本,一般常用的有三種工作模式:命令模式、編輯模式和擴展命令模式(末行模式)。他們之間的轉換關系:
各模式之間的切換:
命令–>編輯
i:在光標所在字符處的前面插入
I:在光標所在行的行首插入
a:在光標所在字符處的后面插入
A:在光標所在行的行尾插入
o:在光標所在處的下一行,新建一行插入
O:在光標所在處的上一行,新建一行插入
編輯–>命令
Esc鍵
命令–>擴展命令
: 執行vim某些內置命令
/ 執行向下搜索
? 執行向上搜索
擴展命令–>命令
Esc鍵
vim命令格式:
vim [OPTIONS] FILE1…
OPTIONS:
+# 打開文件后讓光標處于文檔的第#行
+ 打開文件后,光標處于最后一行
+/PATTERN 打開文件后,光標處于第一次被模式匹配到的行
-b 以二進制形式打開文件
-m 以只讀方式打開文件
-o 水平分割打開多個文件
-O 垂直分割打開多個文件
-d 比較兩個文件的區別
示例:vim -d issue issue2
第二章 命令模式快捷方式介紹
保存內快捷鍵
ZZ 保存退出
ZQ 不保存退出
字符間移動
h 光標向左移動一個字符
i 光標向右移動一個字符
j 光標向下移動一個字符
k 光標向上移動一個字符
#h|i|j|k 光標向指定方向移動#個字符
單詞間移動
w 光標移動到下一個單詞的詞首
e 光標移動到下一個單詞的詞尾
b 光標移動到當前或上一個單詞的詞首
#w|e|b 光標向單詞的指定位置移動#個單詞
屏幕范圍內移動
H 光標移動到本屏內容的第一行的第一個字符處
M 光標移動到本屏內容的最中間的行的第一個字符處
L 光標移動到本屏內容的最后一行的第一個字符處
行內移動
^ 光標移動到本行行首的第一個非空白字符處
0 光標移動到本行行首,可以是空白字符
$ 光標移動到本行的行尾最后一個字符處,可以是空白字符
行間移動
G 光標移動到文本的最后一行
#G 光標移動到文本的指定的第#行
1G、gg 光標移動到文本的第一行
句間、段間移動
) 光標移動到下一句,第一個字符
( 光標移動到上一句,第一個字符
} 光標移動到下一段落,段落起始行第一個字符,有空白行分隔,即認為是段落
{ 光標移動到上一段落,段落起始行第一個字符
翻屏操作
Ctrl+f、PageDown 向文件尾部翻一屏,光標在屏幕第一行的第一個字符處
Ctrl+b、PageUp 向文件首部翻一屏,光標在屏幕最后一行的第一個字符處
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
字符編輯
x 刪除光標所在處的字符,后續本行內容向前移
#x 刪除光標處開始往后的#個字符
xp 交換光標所在處的字符及其后面字符的位置,x相當于刪除了字符,p相當于粘貼了字符
#xp 將光標所在處的#個字符放到放到刪除后留存的第一個符的后面
~ 轉換光標所在處字符的大小寫
替換命令:
r 替換光標所在處的字符為輸入的字符
R 切換為REPLACE模式完全替換
刪除命令:d,可結合光標跳轉字符,實現范圍刪除,內容并未真正刪除,而是保存在寄存器里面
d$ 刪除光標所在處到本行行尾的內容
d^ 刪除光標所在處到本行非空白字符行首的內容
d0 刪除光標所在處到本行行首的內容,行首可以是空白字符
dw 向后刪除光標所在處到下一個單詞的詞首的內容,#dw可刪除#個單詞
de 向后刪除光標所在處到下一個單詞的詞尾的內容,#de可刪除#個單詞
db 向前刪除光標所在處到上一個單詞的詞首的內容,#db可刪除#個單詞
dd 刪除光標所在處的一整行內容,#dd可刪除光標所在處往后的#行內容
D 刪除光標所在處到行尾的內容,等同于d$
#COMMAND 可結合光標跳轉字符,實現刪除范圍內容,如d}、d)等
復制命令:y 復制,行為類似于d命令,復制的內容存放在寄存器上
y$ 復制光標所在處到行尾的內容
y^ 復制光標所在處到行首非空白字符的內容
y0 復制光標所在處到本行行首的內容,行首可以是空白字符
yw 向后復制光標所在處到下一個單詞的詞首的內容,#yw可刪除#個單詞
ye 向后復制光標所在處到下一個單詞的詞尾的內容,#ye可刪除#個單詞
yb 向前復制光標所在處到上一個單詞的詞首的內容,#yb可刪除#個單詞
yy 復制光標所在處的一整行內容,#yy可復制光標所在處往后的#行內容
Y 復制整行
#COMMAND 可結合光標跳轉字符,實現復制范圍內容,如y}、y)等
粘貼命令:
p 緩存區存的內容如果為整行,則粘貼在當前光標所在行的下方;否則,則粘貼在當前光標所在處的后面
P 緩沖區存的內容如果為整行,則粘貼在當前光標所在行的上方;否則,則粘貼在當前光標所在處的前面
改變命令:c,修改后切換成編輯模式,運行后切換到編輯模式,進行編輯操作
c$ 改變當前光標所在處到本行行尾的內容 ,先刪除,后切換到編輯模式
c^ 改變光標所在處到行首非空白字符的內容,先刪除,后切換到編輯模式
c0 改變光標所在處到本行行首的內容,行首可以是空白字符,先刪除,后切換到編輯模式
cw 向后改變光標所在處到下一個單詞的詞首的內容,#cw可改變#個單詞,先刪除,后切換到編輯模式
ce 向后改變光標所在處到下一個單詞的詞尾的內容,#ce可改變#個單詞,先刪除,后切換到編輯模式
cb 向前改變光標所在處到上一個單詞的詞首的內容,#cb可改變#個單詞,先刪除,后切換到編輯模式
cc 改變光標所在處的一整行內容,#cc可改變光標所在處往后的#行內容,先刪除,后切換到編輯模式
C 刪除當前光標到行尾的內容,并切換成插入模式
#COMMAND 可結合光標跳轉字符,實現復制范圍內容,如c}、c)等
撤銷更改:
u 撤銷最近一次的更改
#u 撤銷之前#次的更改
U 撤銷本行的所有更改
. 重復前一個操作
#. 重復前一個操作#次
其他特殊用法:
50 i STRING Esc鍵 相當于粘貼50次STRING到i插入的字符處
<START_POSOTION><COMMAND><END_POSITION>
支持的COMMAND:
y復制、d刪除、gU變大寫、gu變小寫
例如:0y$表示從行首復制到行尾
ggy10G表示從第一行復制到第10行
ye表示從當前位置拷貝到本單詞的最后一個位置
gggUG 表示從第一行到最后一行全轉換成大寫
第三章 擴展命令模式(末行模式)快捷方式介紹
保存退出內命令
:w 存盤,保存
:q 不保存退出
:q! 強制不保存退出
:wq 保存退出
:wq! 強制保存退出
:x 保存退出
讀取另存文件:
:r /PATH/TO/FILE 讀取指定文件內容到當前文件光標所在行的下方
:w /PATH/TO/FILE 將當前文件的內容寫入到另一個指定文件中,相當于另存
運行外部命令:
:!COMMAND 在不退出vim界面的情況下,執行shell命令,單獨另起一個界面,顯示命令結果,顯示完,按任意鍵退回到vim界面
:r!COMMAND 在不退出vim界面的情況下,執行shell命令,并將命令結果寫入到當前光標所在處的下方
示例:vim擴展命令行模式下運行:r!ls /root
地址定界
:# 光標移動到第#行
:#1,#2 從第#1行到第#2行
:#1,+#2 從第#1行開始,加上其之后的#2行的內容
如:2,+3 表示第2到第5行的內容
:. 表示當前行
:$ 表示最后一行
如: .,$-1 表示從當前行到倒數第二行
:% 表示全文,相當于1,$
:/PATTREN1/,/PATTERN2/ 從第一次被PATTERN1模式匹配到的行開始,一直到第一次被PATTERN2模式匹配到的行結束
如:3,/^root/ 表示從第3行開始到第一次匹配到行首為root的行結束,中間的所有的行
/^root/,5 表示從第一次匹配到行首為root的行開始,到第5行,中間的所有的行
編輯命令:配合地址定界命令使用,實現編輯動作
d 表示刪除
y 表示復制
w /PATH/TO/FILE 表示指定范圍的行另存到指定文件中
r /PATH/TO/FILE 表示在指定位置插入指定文件中的內容,如果地址定界是范圍,則范圍內的每行都加入指定文件的內容
查找
/PATTERN 表示從當前光標所在處向下查找指定的內容,支持正則表達式
?PATTERN 表示從當前光標所在處向上查找指定的內容,支持正則表達式
查找到后,n顯示與命令方向相同的下一個匹配到的內容,N顯示與命令方向相反的下一個內容
查找并替換:可與地址定界結合使用,實現范圍內的查找替換
格式:s/要查找的內容/替換為的內容/修飾符
要查找的內容支持正則表達式,替換為的內容支持后向引用,如\1,\2,&等
修飾符:
i 查找時忽略大小寫
g 全局替換,默認情況下,每行只替換第一次匹配到的內容
gc 全局替換,每次替換時詢問
如:查找文件中以空白字符開頭的行,在該行前面加上#號
第四章 其他模式簡介
1、可視化模式:類似利用鼠標操作的選定內容,然后利用文字的編輯命令如d、y、s///等進行處理
命令模式–>可視化模式:
v 切換到可視化模式,針對字符選取
V 切換到可視化模式,針對行選取
Ctrl+v 切換到可視化模式,針對塊選?。愃七x取某些行的位置相同的字段)
v的界面:
V的界面
Ctrl+v的界面
選取了相關內容后,可利用d、y等編輯命令進行編輯操作
2、多文件模式
vim FILE1 FILE2…
利用上述vim打開多個文件時,就是進入了多文件模式,屏幕只同時顯示一個文件的內容
可利用:
:next 切換到下一個文件
:prev 切換到上一個文件
:first 切換到第一個文件
:last 切換到最后一個文件
:wall 保存所有文件
:qall 退出所有
:wqall 保存并退出所有
vim -o FILE1 FILE2…水平分割,一個屏幕水平顯示多個文件
vim -O FILE1 FILE2…垂直分割,一個屏幕垂直顯示多個文件
在多個窗口間切換:Ctrl+w,然后按上下左右鍵進行窗口切換
單文件窗口分割:
Ctrl+w,s 水平分割
Ctrl+w,v 垂直分割
Ctrl+w,q 關閉相鄰窗口
Ctrl+w,o 關閉全部窗口
:wqall 保存并退出所有
第五章 vim運行環境定制
vim的諸多運行屬性都可定義,定義方式包括支持直接在vim界面,擴展命令模式下運行:set OPTION 即可設置,該種設置方式只對當前vim的運行界面生效,要想對某個用戶在運行的時候都啟用該種特性,則需要將該設置命令寫入到該用戶家目錄下的.vimrc文件中,該文件可能默認不存在,可手動創建該文件;如果想對所有用戶都啟用該特性,則可以將該屬性定義在/etc/vimrc配置文件中
常見的屬性有:
set all或set 在擴展命令模式時,運行該命令,可以查看所有可供定制的選項信息
set number 可設置顯示行號,可縮寫為set nu
set nonumber 可取消顯示行號,可縮寫為set nonu
set tabstop=4 可設置tab鍵的縮進字符數量,默認是8個字符
set showmatch 可設置括號成對匹配,可縮寫為set sm
set nosm 可設置取消括號成對匹配
set ai 可設置自動縮進,也就是設置換行時,下一行跟上一行的起始位置自動一樣,默認是在第一字符
set noai 可禁用自動縮進
set hlsearch 設置高亮顯示搜索內容
set nohlsearch 禁用高亮顯示搜索內容
syntax on 啟用語法高亮顯示
syntax off 禁用語法高亮顯示
set ic 忽略字符大小寫
set noic 不忽略字符大小寫
fileformat=unix 將文件轉碼為unix文本格式
fileformat=dos 將文件轉碼為dos文本格式,也就是windows文本格式
set textwidth=65 設置vim文本的寬度為65個字符
help option-list 顯示幫助列表
原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/32432