vim簡介:
vim是從 vi發展出來的一個模式化文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能
特別豐富,在程序員中被廣泛使用。和Emacs並列成爲類Unix系統用戶最喜歡的編輯器。
vim的設計理念是命令的組合,即通過普通命令組合使用完成快捷操作。
一、vim 基本模式:
編輯模式
輸入模式
末行模式:爲內置的命令接口
二、打開文件:
vim [OPTION]... FILE...
+#:打開文件後,直接讓光標處於指定行首
+/PATTERN:打開文件後,直接讓光標處於第一個被PATTERN匹配的行的行首
三、模式轉換:
1)編輯模式 --> 輸入模式
i:insert,在光標所在處輸入;
a:append,在光標所在處後面輸入
o:在當前光標所在行的下方打開一個新行
I:在當前行行首輸入
A:在當前行行尾輸入
O:在當前行上方打開一個新行
c:剪貼選擇的內容到剪貼板並且進入輸入模式
C:剪切從光標位置到行尾到剪貼板並進入輸入模式
2)輸入模式 --> 編輯模式
ESC
3)編輯模式 --> 末行模式
:
4)末行模式 --> 編輯模式
ESC
四:關閉文件:
:q 退出
:q! 強制退出,丟棄所做修改
:wq 保存退出
:x 保存退出
:w /PATH/TO/SOMEWHERE
ZZ: 保存退出
五、光標跳轉:
1)字符間跳轉:
h(左), l(右), k(上), j(下)
2)單詞間跳轉:
w:跳至當前或下一個單詞的詞首
e:跳至當前或下一個單詞的詞尾
b:當前或前一個單詞的詞首
#COMMAND:由#指定一次跳轉的單詞數
3)行首行尾跳轉:
^:跳轉至行首的第一個非空白字符
0:跳轉至行首
$:跳轉至行尾
4)行間移動:
#G:跳轉至有#指定的行;
G:最後一行
1G,gg:第一行
5)句間移動:
)
(
6)段落間移動:
{
}
7)翻屏操作:
Ctrl +f:向下翻一屏(與空格效果一樣)
Ctrl + b:向上翻一屏
Ctrl + d:向下翻半屏
Ctrl + u:向上翻半屏
六、vim的編輯命令:
1)字符編輯
x:刪除光標處的字符
#x:刪除光標處起始的#個字符
X(大寫):往後(行首)刪除
#X:往後刪#個字符
xp:交換光標所在處的字符及其後字符的位置
2)刪除命令:
d:刪除命令,可結合光標跳轉字符,實現範圍刪除;
d$, d^, d0, dw, de, db,
dd:刪除光標所在行
#dd:多行刪除
3)粘貼命令:
p,put,paste
p(小):緩衝區存的如果爲整行,則粘貼至當前光標所在行的下方;否則粘貼至當前光標的所在位置後面
P(大):緩衝區存的如果爲整行,則粘貼至當前光標所在行的上方;否則粘貼至當前光標的所在位置前面
4)複製命令(y,yank)
y:複製,工作行爲相似於d命令:
y$, y0, y^, ye, yw, yb
#COMMAND
yy:複製行
#yy:複製多行
5)替換命令(r,replace)
r:替換光標所在處的字符
6)改變命令(c,change)
c:修改
編輯模式 --> 輸入模式
c$, c^, c0
cb, ce, cw
#COMMAND
cc:刪除並輸入新內容
#cc
7)撤銷及恢復操作
u(undo):撤銷此前的操作
#u:撤銷此前的操作
撤銷此前的撤銷:
Ctrl+r
重複前一個編輯操作:
. (點號)
七、可視化模式:
v:按字符選定
V:按行選定
注意:經常結合編輯命令: d, c, y
八、vim中的末行模式:
(1)地址定界
:start_pos,end_pos
#:具體第#行
#,#:從左側#表示行其實,到右側#表示行結尾
#,+#:從左側#表示的行起始,加上右側#表示的行數,共選定#+1行
.:當前行
$:最後一行
當前行到倒數第二行:.,$-1
%:全文,相當於1,$
/pat1/,/pat2/:
從第一次被pat1模式匹配到的行開始,一直到第一次pat2模式匹配到的行介紹
#,/pat/, /pat/,$: 使用方式:後跟一個編輯命令 , d, y...
w FILE:將範圍內的行另存至指定文件中;
r FILE:在指定位置插入指定文件中的所有內容
(2)查找
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向;
N:與命令反方向
(3)查找並替換
s:在末行模式下完成查找替換操作
s/要查找內容/替換的內容/修飾符
要查找的內容::可使用模式;
替換成的內容:不能使用模式,但可以使用\1,\2,...等後向引用符號,還可以使用"&"引用前面查找時查找到的內容。
修飾符:
i:忽略字符大小寫
g:全局替換;默認情況下,每一行只替換第一次出現
查找替換中的分隔符/可替換爲其他字符,例如
s@@@
s###
練習:
1、複製/etc/grub2.cfg至/tmp/目錄,用查找替換命令刪除/tmp/grub2.cfg文件中的行首的空白字符;
%s/^[[:space:]]\+//g 或: %s#^\s\+##
2、複製/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令爲/tmp/functions的每行開頭爲空白字符的行的行首添加一個#號;
:%s/^[[:space:]]/#&/ 或:%s@^\s@#&
九、文件打開視圖模式:
多文件模式:
vim FILE1 FILE2 FILE3
:next 下一個
:prev 前一個
:first 第一個
:last 最後一個
:wall 保存所有
:qall 退出所有
窗口分隔模式:
vim -o|-O FILE1 FILE2
-o:水平分隔
-O:垂直分隔
在窗口間切換:Ctrl+w,Arrow
單文件窗口分隔:
Ctrl+w,s:split,水平分隔
Ctrl+w,v:vertical 垂直分隔
十、定製vim的工作特性:
配置文件:永久有效
全局:/etc/vimrc
個人:~/.vimrc
末行:當前vim進程有效
1)行號
顯示:set number,簡寫set nu
不顯示:set nonumber,簡寫set nonu
2)括號匹配
匹配:set showmatch, set sm
取消:set nosm
3)自動縮進
啓用:set ai
禁用:set noai
4)高亮搜索
啓用:set hlsearch
禁用:set nohlsearch
5)語法高亮
syntax on|off
6)忽略字符的大小寫
啓用:set ic
不忽略:set noic
十一、vim自帶練習教程:vimtutor