文本編輯工具之vim使用介紹
1、文本編輯器:
純文本編輯器,ascii碼(127個字符),unicode(全球統一編碼)
2、文本編輯器分類:
行編輯器:sed
全屏編輯器:nano、vi、vim
3、vim編輯器模式介紹:
編輯模式:(也叫命令模式)
輸入模式:
末行模式:內置命令行接口
4、vim編輯器模式之間轉換:
編輯模式-->輸入模式
i:insert;在光標所在處輸入
a:append;在光標所在處後方輸入
o:在光標所在處下方打開一個新的行
I:在光標所在行行首輸入
A:在光標所在處行尾輸入
O:在光標所在行上方打開一個新的行
輸入模式-->編輯模式
ESC鍵
編輯模式-->末行模式
:
末行模式-->編輯模式
ESC鍵
5、vim新建或打開文件
格式:
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
option:
+#: 打開文件後,光標直接處於第#行的行首,如果不加#,+則代表處於文件尾行行首;
+/PATTERN:打開文件後,直接讓光標處於被模式PATTERN匹配的第一次匹配的字符行的行首
6、vim退出
ZZ: 在編輯模式下,輸入兩個大寫Z
q:不保存退出,在末行模式下輸入q
q!:強制不保存退出,末行模式下
wq:保存退出,末行模式下
x:保存退出,末行模式下
w /path/to/somefile :保存至指定路徑文件,末行模式下
7、編輯模式下(即命令模式)的相關操作
7.1、實現光標跳轉:字符間跳轉、單詞間跳轉、行首行尾跳轉、行/句間跳轉、段間跳轉
字符間跳轉:
h:向左跳轉一個字符
l:向右跳轉一個字符
j:向下跳轉一個字符
k:向上跳轉一個字符
#[hjkl]:向相應方向一次跳轉#個字符;如2h,向左跳轉2個字符一次
單詞間跳轉:
w:跳轉至下一個單詞的詞首;
b:跳轉至當前或前一個單詞的詞首
e:跳轉至當前或下一個單詞的詞尾;
#[wbe]:跳轉指定的#單詞;
行首行尾跳轉:
^:跳轉至行首的第一個空白字符;
0:零;跳轉至行首,絕對行首(包括空白字符)
$:跳轉至行尾,絕對行尾,包括空白字符
行間跳轉:
#G:跳轉指定的#行
1G:跳轉至第一行
G:跳轉至最後一行;
gg:跳轉至第一行
句間跳轉:
):跳轉至下一句(右括號)
(:跳轉至前一句(左括號)
#[()]:跳轉至第#句
段間跳轉:
}:跳轉至下一段落
{:跳轉至上一段落
#[{}]:跳轉至第#段落
7.2、翻屏操作:
ctrl+f:向文件尾部翻一屏;
ctrl+b:向文件首部翻一屏;
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
enter:按行向後翻
7.3、編輯模式下的命令
有如下:字符編輯、替換操作、刪除操作、粘貼操作、復制操作、改變操作等命令
字符編輯命令:
x:刪除光標所在處的字符
#x:刪除光標所在處及其後的指定個數#的字符
xp:將光標所在處的字符與其後的位置字符交換位置
替換命令:replace
r:替換光標所在處的字符,r後跟要替換的單個字符;
刪除命令:d
d:刪除命令,可結合光標跳轉字符,實現範圍刪除
[#]d[hjklweb]:結合光標跳轉字符操作
dd:刪除光標所在的行
#dd:刪除光標所在處及其後的共#行;
粘貼命令:p
p:小寫p;緩沖區中的內容如果為整行,則粘貼在當前光標所在處的下行,如果不為整行,則粘貼至當前光標所在處的後方;
P:大寫P;緩沖區中的內容如果為整行,則粘貼在當前光標所在處的上方,如果不為整行,則粘貼至當前光標所在處的前方;
復制命令:yank,y
y:復制,工作行為相似於“d”命令
yy:復制一整行
#yy:復制共#行
y[^$0web]
改變命令:c
改變命令c和刪除命令d一樣,只是比d命令多了模式切換。從編輯模式切換到輸入模式。
c:
#cc
撤銷命令:
u:撤銷此前的操作,默認最多可撤銷前50次操作
#u:撤銷此前的#次操作
撤銷此前的撤銷命令:
ctrl+r :恢復此前的撤銷操作。
重復執行前一次編輯操作:. (點號)
.
可視化模式:支持上下左右鍵框選。
v:小寫v;按字符選定
V:大寫V;按行選定;
vim自帶的練習教程:vimtutor
8、末行模式操作:
末行模式是內建的命令行接口。
他包括以下:地址界定、查找、查找替換等操作。
8.1、地址界定:可同編輯命令一同使用,實現編輯操作,如:d,y,c,w,r;註意編輯操作直接跟在界定後面,不用再加空格
地址界定格式:
:start_pos[,end_pos] //開始位置[,結束位置]
:# : 第#行;
如::5 表示第5行,
:#,N :指定範圍,左側為起始行,右側為結束行
如::9,100 :表示從第9行到第100行
:#,+# :指定行範圍,左側為起始行絕對編號,右側為相對左側的偏移量;
如::3,+7 :表示從第三行到第10行
:. :點好表示當前行。
:$ :最後一行
如::.,$ :表示當前行到最後一行
:% :表示全文
相當於:1,$
:/pattern/ :從光標所在處開始,第一次被模式所匹配的行
如: :/fstab/ :表示查找第一次匹配到的fstab。
:/fstab/,$ :表示從光標所在處第一次匹配到的fstab到末行之間的行。
:/pattern1/,/pattern2/ :第一次被模式1匹配到的和第一次被模式二之間匹配到額行,很少用。
地址界定後跟編輯操作:
:5w /path/to/somefile:把第5行內容寫到特定文件中
:5r /path/from/somefile:在第五行後追加其他文件的內容
:w /path/to/somefile :將範圍內的文本保存到指定的文件中
:r /path/from/somefile :將指定文件中的文本讀取並插入指定位置;
8.2、查找
:/pattern :從當前光標所在處向文件尾部查找,能夠被當前模式匹配到的所有字符串;註意和地址界定中的:/pattern/ 的區別。
:?pattern :從當前光標所在處向文件首部查找,能夠被當前模式匹配到的所有字符串;
註意: /pattern和?pattern可以配合n和N進行定位,n和命令方向相同,N和命令方向相反;
8.3、查找並替換: s
格式::s/要查找的內容/替換為的內容/[修飾符]
要查找的內容:可使用正則表達式
替換為的內容:不能使用正則表達式,但是可以引用。
註意:如果“要查找的內容”部分在模式中使用分組符號,在替換為的內容中使用後項引用; 直接引用查找模式匹配到的全部文本,要使用 & 符號。
修飾符:
i:查找時忽略大小寫
g:全局替換。默認為替換每行中的第一個匹配項
註意:如果分隔符與查找的或替換的內容有沖突,可以將分隔符“/”替換成其他的非常用字符,如@、#
:s@要查找的內容@替換為的內容@[修飾符]
:s#要查找的內容#替換為的內容#[修飾符]
如::%s@\<t\([[:alpher:]]\+\)\>@T\1@g //匹配到t開頭的單詞,然後換成T開頭的單詞
:%s@\<t[[:alpher:]]\+\)@&er@g //匹配到t開頭的單詞,在其後加上er
:%s@#@@ //將#號開頭的行替換成空
練習1:復制/etc/grub2.cfg文件至/tmp目錄中,用查找替換命令刪除/tmp/grub2.cfg文件中以空白字符開頭的行的行首空白字符
[root@localhost ~]# cp /etc/grub2.cfg /tmp/
:%s/^[[:space:]]\+//
練習2:復制/etc/rc.d/init.d/functions文件至tmp中,用查找替換命令為/tmp/functions文件中的每個以空白字符開頭的行的行首加上“#”
[root@localhost tmp]# cp /etc/rc.d/init.d/functions /tmp/functions
:%s/^[[:space:]]\+/#\1/g
練習3:為/tmp/grub2.cfg文件的前三行的行首加上#
:1,3s/.*/#&/
練習4:將/etc/yum.reposd/centos-base.repo文件中將所有enabled=0替換為enabled=1,所有的gpgcheck=0,替換為gpgcheck=1
[root@localhost tmp]# cp /etc/yum.repos.d/CentOS-Base.repo /tmp/centos-base.repo
:%s/\(enabled\|gpgcheck\)=0/\1=1/g
9、vim多文件功能
vim file1 file2 ... //依次新建、打開多個文件,默認打開的第一個,在新建的文件中進行切換,在末行模式下輸入:next(下一個文件)、prev(上一個文件)、first(第一個文件)、last(最後一個文件)。
退出所有文件,末行模式下輸入:
wqall :保存退出所有文件
wall:保存所有文件
qall:推出所有文件
如:[root@localhost tmp]# vim fstab issue //依次打開fstab、issue文件,如果不存在,則新建。
9.1、vim文件的多窗口功能:
多文件的多窗口顯示:
vim -o file1 file2 //小寫“o”水平分割同時顯示file1和file2
vim -O file1 file2 //大寫“o”垂直分割同時顯示file1和file2
文件窗口之間的切換:按住ctrl+w松開後,用上下左右箭頭選擇需要操作的文本窗口。
單文件的多窗口顯示:
打開文件後,按住ctrl+w松開,按s鍵水平分割;
打開文件後,按住ctrl+w松開,按v鍵垂直分割;
關閉展開的窗口,正常退出操作即可。
10、定制vim的工作特性:
末行模式下的設定,僅對當前vim進程有效;
如果要vim特性永久有效,需要修改配置文件:
全局配置文件:/etc/vimrc
個人配置文件:~/.vimrc //可能需要自己創建此文件。
如:vim /root/.vimrc
set number //顯示行號。
vim特性:(末行模式下設定)
行號:
顯示行號:set number 簡寫為set nu
取消行號:set nonumber 簡寫為set nonu
括號匹配,高亮顯示:
匹配顯示:set showmatch ;set sm
取消顯示:set noshowmatch;set nosm
自動縮進:
啟用縮進:set ai
停用縮進:set noai
高亮搜索結果:
啟用設置:set hlsearch
停用設置:set nohlsearch
語法高亮顯示:
啟用設置:syntax on
停用設置:syntax off
忽略字符大小寫:(查找替換中的修飾符g)
啟用設置:set ic
停用設置:set noic
11、末行模式下的幫助命令:
help
help 關鍵字
12、設置vim編輯器中的tab縮進為四個字符
在.vimrc中添加以下代碼,實現按tab鍵產生4個空格
set ts=4 (註:ts是tabstop的縮寫,設置tab寬4個空格)
set expandtab
文本編輯工具之vim使用介紹