vim是一個功能強大的全屏幕文本編輯器,是Linux/Unix最常用的文本編輯器,其作用是建立、編輯、顯示文本文件。vim的特點是沒有菜單,只有命令。
vim主要有三種工作模式,分別為命令模式、插入模式、編輯模式。三者的關系可由下圖來表示:

命令 | 作用 |
a | 在光標所在字符后插入 |
A | 在光標所在行尾插入 |
i | 在光標所在字符前插入 |
I | 在光標所在行首插入 |
o | 在光標下插入新行 |
O | 在光標上插入新行 |
命令 | 作用 |
:set nu | 設置行號 |
:set nonu | 取消行號 |
gg | 到第一行 |
G | 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
$ | 移至行尾 |
0 | 移至行首 |
命令 | 作用 |
x | 刪除光標所在處字符 |
nx | 刪除光標所在處后n個字符 |
dd | 刪除光標所在行 |
dG | 刪除光標所在行到文件末尾內容 |
ndd | 刪除光標所在行后n行(包括當前行) |
D | 刪除光標所在處到行尾內容 |
:n1,n2d | 刪除指定范圍行 |
命令 | 作用 |
yy | 復制當前行 |
nyy | 復制當前行以下n行(包括當前行) |
dd | 剪切當前行 |
ndd | 剪切當前行以下n行(包括當前行) |
p,P | 粘貼在當前光標所在行下或行上 |
命令 | 作用 |
r | 取代光標所在處字符 |
R | 從光標所在處開始替換字符,按ESC結束 |
u | 取消上一步操作 |
命令 | 作用 |
/string | 搜索指定字符串,搜索時忽略大小寫:set ic,取消忽略:set noic |
n | 搜索指定字符串的下一個出現位置 |
:%s/old/new/g | 全文替換指定字符串 |
:n1,n2s/old/new/g | 在一定范圍內替換指定字符串 |
其中g表示不詢問確認,如果是c的話表示詢問確認
(7)保存和退出命令命令 | 作用 |
:w | 保存修改 |
:w new_filename | 另存為指定文件 |
:wq | 保存修改并退出 |
ZZ | 快捷鍵,保存修改并退出 |
:q! | 不保存修改并退出 |
:wq! | 保存修改并退出(文件所有者和root可使用) |
(1)將一個文件的內容導入到文本文件中,其格式為:
:r 文件名
例:創建test文本,寫入如下內容,將/etc/issue的內容復制到test文本中
[root@localhost ~]# vi testI am ws.What's your name?My name is LiMingI am glad to see you.
在最后一行的下一行插入issue的內容,在命令模式下輸入:r /etc/issue,可得:
I am ws.What's your name?My name is LiMingI am glad to see you!CentOS release 6.5 (Final)Kernel /r on an /m
(2)在不退出vim的情況下,執行相應的操作命令,其格式為:
:!命令
例:如在命令模式下執行ls命令
I am glad to see you!CentOS release 6.5 (Final)Kernel /r on an /m :!ls[No write since last change]anaconda-ks.cfg install.log install.log.syslog
(3)導入命令執行結果,相當于將前兩者進行綜合,其格式為:
:r !命令
例:在test的文本末尾添加日期,在命令模式下輸入:r !date,其結果為:
I am ws.What's your name?My name is LiMingI am glad to see you!CentOS release 6.5 (Final)Kernel /r on an /mFri Jan 2 06:00:55 CST 2015
(4)定義快捷鍵
可以為常用的命令定義快捷鍵,其格式為:
map 快捷鍵 觸發命令
注:快捷鍵的創建需要同時按下Ctrl+v+創建快捷鍵的字母
例1:創建一個快捷鍵,可使在行首加入注釋符#,只需在命令模式下輸入:map ^P I#<ESC>,其中^P為Ctrl+v+p同時按下后的顯示,I#即為行首插入注釋符#,<ESC>表示退出編輯模式到命令模式。
然后在第一行執行Ctrl+p,即可得到如下結果:
#I am ws.What's your name?My name is LiMingI am glad to see you!CentOS release 6.5 (Final)Kernel /r on an /mFri Jan 2 06:00:55 CST 2015
例2:創建刪除行首注釋符#的快捷鍵,在命令模式下輸入:map ^B 0x。
例3:在當前光標下為郵箱創建快捷鍵,在命令模式下輸入如下命令:
:map ^H i123@QQ.com
(5)連續注釋行,該命令與搜索替換命令1.(6)類似。如在連續多行添加注釋符#,在命令模式下輸入如下命令:
:n1,n2s/^/#/g
其中^表示行首
相對的,取消連續行注釋可以在命令模式下輸入如下命令:
:n1,n2s/^#//g
如果以"http://"表示注釋符的話,則連續注釋行可在命令模式下輸入如下命令:
:n1,n2s/^//////g
其中"/"表示轉義字符。
例:在test文本中的前兩行加入//注釋符:
//I am ws.//What's your name?My name is LiMingI am glad to see you!CentOS release 6.5 (Final)Kernel /r on an /mFri Jan 2 06:00:55 CST 2015
(6)替換
在文本文件中,可以將一個字符串替換為另一個字符串,如將mail替換為123@qq.com,其命令格式為:
:ab mail 123@qq.com
然后在文本中寫入mail,按空格或Enter鍵則mail自動替換為123@qq.com。
通常設置的快捷鍵或替換在系統重啟時會消失,如果想長時間的保存快捷鍵的定義或替換等,可以在每個用戶的家目錄(如root在/root,用戶在/home/用戶)下寫入配置文件.vimrc(root下如/root/.vimrc),然后在該配置文件中編輯模式下寫入所需要的命令,且行首無需加冒號(:)。
新聞熱點
疑難解答