vim是一個功能強大的全屏幕文本編輯器,是Linux/Unix最經常使用的文本編輯器,其做用是創建、編輯、顯示文本文件。vim的特色是沒有菜單,只有命令。vim
vim主要有三種工做模式,分別爲命令模式、插入模式、編輯模式。三者的關係可由下圖來表示:編輯器
命令spa |
做用code |
ablog |
在光標所在字符後插入ci |
A字符串 |
在光標所在行尾插入string |
iit |
在光標所在字符前插入table |
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的話表示詢問確認
命令 |
做用 |
:w |
保存修改 |
:w new_filename |
另存爲指定文件 |
:wq |
保存修改並退出 |
ZZ |
快捷鍵,保存修改並退出 |
:q! |
不保存修改並退出 |
:wq! |
保存修改並退出(文件全部者和root可以使用) |
(1)將一個文件的內容導入到文本文件中,其格式爲:
:r 文件名
例:建立test文本,寫入以下內容,將/etc/issue的內容複製到test文本中
[root@localhost ~]# vi test I am ws. What's your name? My name is LiMing I am glad to see you.
在最後一行的下一行插入issue的內容,在命令模式下輸入:r /etc/issue,可得:
I am ws. What's your name? My name is LiMing I 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 LiMing I am glad to see you! CentOS release 6.5 (Final) Kernel \r on an \m Fri 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 LiMing I am glad to see you! CentOS release 6.5 (Final) Kernel \r on an \m Fri 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
若是以"//"表示註釋符的話,則連續註釋行可在命令模式下輸入以下命令:
:n1,n2s/^/\/\//g
其中"\"表示轉義字符。
例:在test文本中的前兩行加入//註釋符:
//I am ws. //What's your name? My name is LiMing I am glad to see you! CentOS release 6.5 (Final) Kernel \r on an \m Fri 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),而後在該配置文件中編輯模式下寫入所須要的命令,且行首無需加冒號(:)。