vim 超強編輯器
一、Vim編輯器的基本操作
1. 基本操作
-
VIM:模式化的編輯器
-
基本模式
-
編輯模式 (命令模式)
-
輸入模式 (插入模式)
-
末行模式 (vim內建的命令列介面)
-
Note:開啟的時候預設的模式是編輯模式
-
-
開啟檔案
-
# vim [OPTION]... FILE...
-
+#
:開啟檔案後,直接讓游標處於第#行的行首 -
+/PATTERN
:開啟檔案後,直接讓游標處於第一個被PATTERN匹配到的行的行首;
-
-
模式轉換
-
模式轉換:
-
:q
:退出 -
:!
:強制退出,丟棄做出的修改; -
:wq
:儲存退出; -
:x
:儲存退出; -
:w /PATH/TO/SOMEWHERE
:當前編輯的文字儲存到別的檔案; -
ZZ
:儲存退出; -
ESC
-
:
-
ESC
-
i
:insert,在游標所在處前面插入; -
a
:append,在游標所在處的後面插入; -
o
:open,在當前游標所在行的下一行開啟新行,並轉換為輸入模式; -
I
:在當前游標所在行的行首 -
A
:在當前游標所在行的行尾輸入; -
O
:在游標所在行的上一行開啟一個新行,並轉換為輸入模式; -
編輯模式 – – > 輸入模式
-
輸入模式 – – > 編輯模式
-
編輯模式 – – > 末行模式
-
末行模式 – – > 編輯模式
-
關閉檔案
-
-
圖示說明如下: (轉載請註明出處)
2. 游標跳轉:
-
字元間跳轉:
-
h
:左 -
l
:右 -
k
:上 -
j
-
h,j,k,l
-
#COMMAND
:跳轉由#指定的個數的字元;
-
-
單詞間跳轉:
-
w
:跳轉至下一個單詞或後一個單詞的詞首; -
e
:跳轉至當前或下一個單詞的詞尾; -
b
:跳轉至當前或下一個單詞的詞首; -
#COMMAND
:由#指定一次跳轉的單詞數;
-
-
行首行尾跳轉:
-
^
:跳轉至行首的第一個非空白字元; -
0
:跳轉至絕對的行首; -
$
:跳轉至絕對行尾;
-
-
行間移動:
-
#G
:跳轉至由#指定行; -
G
:跳轉至最後一行; -
1G
,gg
:跳轉至第一行;
-
-
句間移動:
-
)
:跳轉至下一個句子; -
(
:跳轉至上一個句子;
-
-
段落間移動:
-
}
:跳轉至下一段 -
{
:跳轉至上一段
-
3. vim的編輯命令:
-
字元編輯:
-
x
:刪除游標處的單個字元; -
#x
:刪除游標處起始的#個字元; -
xp
:交換游標所在處的字元及其後面字元的位置;
-
-
替換命令:
-
r
,replace -
r
:替換游標所在處的字元;(單字元替換)
-
-
刪除命令:
-
#dd
:向下刪除#行;
-
d$
:刪除至絕對行尾 -
d^
:刪除至行首的第一個非空白字元 -
d0
:刪除至絕對行首
-
d
:刪除命令,可結合游標跳轉字元,實現範圍刪除; -
dd
:刪除游標所在行;
-
-
貼上命令:
-
(
p
,put,paste) -
p
:緩衝區中儲存的如果為整行內容,則貼上至當前游標所在行的下方;否則,則貼上至當前游標所在處的後面; -
P
:緩衝區中儲存的如果為整行內容,則貼上至當前游標所在行的上方;否則,則貼上至當前游標所在處的前面;
-
-
複製命令:
-
y$
:複製至絕對行尾 -
y0
:複製至絕對行首 -
y^
:複製至行首的第一個非空白字元 -
yy
:複製整行
-
#yy
:複製多行;
-
y
,yank -
y
:複製,工作行行為相似於d命令;
-
-
改變命令:
-
編輯模式 – -> 輸入模式
-
c
,change -
c
:修改 -
cc
:刪除並輸入新內容 -
#cc
:一次刪除#行
-
二、其它編輯操作
1.視覺化模式
-
v
:按字元選定 -
V
:按行選定 -
Note:經常結合編輯命令;
2. 撤銷此前的編輯:
-
u
(undo):撤銷此前的操作;-
#u
:撤銷指定次數的操作;
-
-
撤銷此前的撤銷:
-
Ctrl+r
-
-
重複前一個編輯操作:
-
.
-
三、翻屏操作
-
Ctrl+f
:向檔案尾部翻一屏; -
Ctrl+b
:向檔案首部翻一屏; -
Ctrl+d
:向檔案尾部翻半屏; -
Ctrl+u
:向檔案首部翻半屏; -
vim自帶的練習教程:
-
vimtutor
-
四、vim的末行模式
-
內建的命令列介面;
-
特性:
-
(1). 地址定界
-
後跟一個編輯命令:
-
d
:刪除指定範圍的內容 -
y
:複製指定範圍的內容 -
w /PATH/TO/SOMEWHERE
:將範圍內的行另存至指定檔案中; -
r /PATH/FROM/SOMEFILE
:在指定位置插入指定檔案中的所有內容; -
:start_pos,end_pos
-
#:
具體的第#行,例如:2表示第2行; -
#,#
:從左側#表示起始,到右側#表示結束; -
#,+#
:從左側#表示的行開始,加上右側#表示的行數; -
.
當前行; -
$
:最後一行; -
%
:全文;相當於(1,$) -
/pat1/,/pat2/
:表示從第一次被pat1匹配到的行開始,一直到pat2匹配到的行結束 -
使用方式:
-
-
(2). 查詢
-
n
:與命令同方向; -
N
:與命令反方向; -
/PATTERN
:從當前游標所在處向檔案尾部查詢 -
?PATTERN
:從當前游標所在處向檔案首部查詢
-
-
(3). 查詢並替換
-
s/要查詢的內容/替換為的內容/修飾符
-
查詢替換中的分隔符
/
可替換為其它字元,例如: -
i
:忽略大小寫 -
g
:全域性替換;預設情況下,沒一行只替換第一次出現的內容; -
要查詢的內容:可使用模式;
-
替換為的內容:不能使用模式,但可以使用\1, \2, …等後向引用符號;好可以使用
"&"
引用前面查詢時查詢到的整個內容; -
修飾符:
-
s###
-
s
:在末行模式下完成查詢替換操作
-
六、vim的檔案模式
1. 多檔案模式
-
vim FILE1 FILE2 FILE3 …
-
:next
切換至下一個文字 -
:prev
切換至前一個文字 -
:first
切換至前一個文字 -
:last
切換至最後一個文字 -
:wall
儲存所有 -
:qall
退出所有
-
2. 視窗分隔模式
-
vim -o|-O FILE1 FILE2 …
-
-o
:水平分割 -
-O
:垂直分割 -
在視窗間切換:
Ctrl+w,Arrow
3. 單檔案視窗分割:
-
Ctrl+w,s
:split,水平分割 -
Ctrl+w,v
:vertical,垂直分割
4. 定製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
-
禁用:
syntax off
-
-
(6) 忽略字元大小寫
-
啟用:
set ic
-
禁用:
set noic
-
5. 書籍推薦:《Vim-handbook-cn-72》
6. 獲取幫助
-
在末行模式下:
help SUBJECT