Vim簡介:vim
Vim是一個相似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增長了不少特性。VIM是純粹的自由軟件。bash
Vim廣泛被推崇爲類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不一樣變體。1999 年Emacs被選爲Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs一樣都是很是優秀的文本編輯器。編輯器
全屏幕的編輯器:VIM,又稱,visual interface,是一款文本編輯器,vi, vi iMprovedide
Vim模式:spa
編輯模式:命令模式開放源代碼
輸入模式:orm
末行模式:blog
使用Vim:教程
vim [options] [file ..]文檔
# vim
# vim /PATH/TO/SOMEFILE
+#:#爲行號;
+:快速定位至最後一行
+/PATTERN:快速匹配到文檔
模式間轉換:
編輯模式 --> 輸入模式:
i: 當前光標輸入,
a:當前光標的下一位輸入,
o:新插入一行輸入,
I: 行首輸入,
A:行尾輸入,
O:上方新建行輸入,
輸入模式 --> 編輯模式
ESC
編輯模式 --> 末行模式
:
末行模式 --> 編輯模式
ESC
關閉vim:
末行模式:
:q 退出;
:q! 強制退出;
:wq 保存並退出;
:x 保存並退出;
編輯模式:
ZZ:保存退出;
光標跳轉:
注:如下操做需在編輯模式完成;
字符間跳轉:
k:
h: l: (k,上)(j,下)(h,左)(l,右)
j:
#COMMAND: #號表明數字,5k(表示5個字符)
單詞間跳轉:
w:下一個單詞的詞首;
e:當前或後一個單詞的詞尾;
b:當前或前一單詞的詞首;
#COMMAND:
行內跳轉:
^:跳轉至行首的第一個非空白字符;
0:跳轉至絕對行首;
$:跳轉至絕對行尾;
行間移動:
#G: 5G (跳轉到第五行)
1G,gg
G:文本的文尾(最後一行)
gg:文本的文首(第一行)
句間移動:
)
(
段落間移動:
}
{
編輯命令和操做:
注:如下操做需在編輯模式完成;
字符編輯:
x: 刪除光標所在處的字符
#x: 5x (刪除光標所在處後5個字符)
xp: 刪除並複製
r: 替換光標所在處的字符,R;
刪除命令:
d: 刪除命令
d^:刪除光標至行首
d$:刪除光標至行尾
d0:刪除光標至行首的全部字符
dw, de, db
dd:刪除當前光標的所在行(整行)
#COMMAND:#表明數字
注:刪除的內容會被vim編輯器保存至緩衝區當中;
粘貼命令:p (paste, put)
若是此複製或刪除的內容不是一個完整行
p:粘貼至當前光標所在處後面;
P:粘貼至當前光標所在處前面;
若是複製的內容是完整行(可不止一行)
p: 粘貼至當前光標所在行下方;
P:粘貼至當前光標所在行上方;
複製命令:y, yank
y:複製命令
y$, y^, y0
ye, yw, yb
yy:複製行
#COMMAND:5yy(複製5行)
修改命令:c, change
c$, c^, c0
cb, ce, cw
cc: 刪除當前行,並移至行首,開啓輸入模式
#COMMAND:5cc(刪除光標如下5行,並開啓輸入模式)
撤銷命令:
u: undo;撤消此前編輯操做;
#u:#表明撤銷次數
Ctrl+r:恢復此前的撤消操做(撤銷撤銷,還原撤銷)
.: 重複前一個編輯操做
翻屏操做快捷鍵:
Ctrl+f: 向後一屏;
Ctrl+b:向前一屏;
Ctrl+d: 向後半屏;
Ctrl+u: 向前半屏;
多文件模式:
打開文件:vim [OPTIN]...[FILE]...
:next 下一個文件
:first 第一個文件
:prev 上一個文件
:last 前一個文件
:wqall 所有保存並退出
:q!all 所有強制退出
多文件窗口分割:
打開文件:vim -o|-O FILE1 FILE2 ...
Ctrl+w:切換窗口,多文件編輯窗口切換
單文件窗口分割:
Ctrl+w, s: split, 水平分割
Ctrl+w, v: vertical, 垂直分割
VIM內建教程:
[root@localhost ~]# vimtutor
VIM末行模式操做和命令:
注:以下如何操做均在末行模式完成
一、地址,定界
:start_pos,end_pos
#:第#行;
#,#
#,+#
.: 當前行
$: 最後一行
%: 全文,至關於1,$
/pat1/:第一次被此模式所匹配到的行;
#,/pat1/
/pat1/,/pat2/
後可跟編輯命令:
d, y
w, r
二、查找
/PATTERN:向尾部進行
?PATTERN:向首部進行
n: 與命令同方向
N:與命令反方向
三、查找替換
s: 在末行模式下,在地址定界的範圍內完成查找替換操做;
s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可以使用模式
替換爲的內容:不能使用模式,但可使用後向引用符號,以引用前面模式中的分組括號所匹配到的內容;
\1, \2, ...
&:引用「要找的內容」匹配到的整個內容;
修飾符:
i: 忽略大小寫
g: 全局替換
/:用於分隔符,因此,要查找的內容或替換爲的內容中出現此符號,要使用\對其轉義,使用格式:\/分隔符可替換爲其它字符:例如@,#等;
四、在vi中執行命令和導入文件
在末行模式下:
導入文件: r FILENAME
執行命令: !COMMAND
導入執行命令的結果: r!COMMAND
定製vim的某些工做特性
一、行號
顯示:set nu
禁用:set nonu
二、括號匹配
顯示:set sm
禁用:set nosm
三、自動縮進:
set ai
set noai
四、高亮搜索
set hlsearch
set nohlsearch
五、語法着色
syntax on
syntax off
六、忽略字符大小寫
set ic
set noic
七、:help 獲取幫助
特性設定的永久生效方式:
全局配置文件:/etc/vimrc
用戶我的的配置文件:~/.vimrc
練習題:
一、複製/etc/grub.cfg配置文件至/tmp目錄,用查找替換命令刪除/tmp/grub.cfg文件中的行首的空白字符;
答:%s/^[[:space:]]//g
二、複製/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令爲/tmp/functions的每行開頭爲空白字符的行的行首加一個#; 原有空白字符保留;
答:%s/^[[:space:]][[:space:]]/#/g
三、替換/tmp/functions文件中的/etc/sysconfig/init爲/var/log;
答:%s/\/etc\/sysconfig\/init/\/var\/log/g
四、刪除/tmp/functions文件中因此#開頭,且#後面至少跟了一個空白字符的行的行首#;
答::%s/^#[[:space:]]//g