這是當時初學VIM後作的一個思惟導圖,圖片稍大,因此從freemind導出了html文本po在下面;圖片在最下方,放大可清晰瀏覽。html
VIMshell
功能:瀏覽,普通編輯vim
x:刪除光標所在字符 (=d+h)spa
X:刪除光標前一個字符 (=d+l)命令行
D:刪除當前行光標位置到行尾的字符 (=d+$)htm
dd:刪除光標所在的行對象
J:刪除光標所在行的換行符blog
p:在光標後粘貼圖片
P:在光標前粘貼,粘貼行時,p是粘貼在光標的下方,P粘貼在光標上方字符串
xp:交換兩個字符的位置
ddp:交換兩行的位置
u:撤銷前一個操做
Ctrl+r:恢復前一個操做,能夠配合數字n進行n次批量操做;如3x,則刪除當前光標及其後兩個字符。
注1:刪除命令執行後,刪除的內容保存在緩衝區。
注2:粘貼命令調用緩衝區內最近的內容。
w:下一個單詞的詞首
W:空白字符分割的下詞詞首
b:上一個單詞的詞首
B:空白字符分割的上詞詞首
e:下一個單詞的詞末
E:空白字符分割的下詞詞末
ge:上一個單詞的詞末
GE:空白字符分割的上詞詞末
注3:光標在單詞內時,b/e命令的結果是移動到本單詞的詞首/詞末
注4:命令前+數字n,執行n次命令
Ctrl+g:顯示當前行的位置信息(第幾行,相對整個文本行數的百分比)(當次生效)
r:替換當前字符
R:(進入replace模式)持續替換光標所在字符,直到使用ESC退出替換模式。
例:
1:/word1 \\查找單詞word1
2:cw word2 \\把word1修改成word2
3:n \\下一個匹配點
4:. \\重複步驟2
「.」命令重複的對象:
普通編輯命令(普通模式下的命令),組合命令(操做符+動做);
不能重複命令行下的命令。
vim file1 file2 file3...:
可在文本間切換編輯。
:n:進入下一文本
:N:進入上一文本
保存、退出
:+w :保存文本,不退出vim
:+wq:保存並退出vim(無論有否修改,文件修改時間都會更新)
:+x:如有修改,則保存並退出vim,若無修改,則直接退出vim
:+q :未對文本進行修改時,可以使用該命令直接退出vim
:+q!:強制退出vim(放棄修改)
:+e!:放棄修改並從新打開該文本
環境設定
:+set nu[mber]:顯示行號
:+set nonu[mber]:隱藏行號
:+set ruler:顯示光標位置信息
:+set noruler:隱藏光標位置信息
:+set hlsearch:高亮匹配
:+set nohlsearch:取消高亮匹配
:+nohlsearch:臨時取消高亮(只取消一次查詢的高亮)
:+set ic或ignorecase):忽略大小寫
:+set noic(或noignorecase):區分大小寫
當前命令忽略大小寫:查找命令+\c,如:/test\c,查找test,忽略大小寫
:+set incsearch:在輸入字符串過程當中顯示匹配點
:+set nowrapscan:找到文尾後中止查找
:+set wrapscan:恢復爲到文尾後自動從頭開始
替換(查找而後替換)
:s/old/new/ :當前行的第一個old替換爲new(old和new能夠是字符也能夠是字符串)
:x,ys/old/new/g:x行到y行的全部old替換爲new(注意末尾的參數g,不加參數g則只替換每行的第一個old)
參數「x」替換爲「.」,則從當前行開始
參數「y」替換爲「$」,則到最後一行爲止
:%s/old/new/gc:全局替換,替換文本中全部old爲new(注意最後的參數「c」,即爲每次替換均須要確認)
:+e filename:vim下打開指定文本
:+!command:vim下執行某shell命令
:marks:查看已有的標記
:delmarks 標記名:刪除某標記
/+字符或字符串:在文本內從光標位置向下查找指定字符/字符串
?+字符或字符串:反向查找
查找命令執行後,可以使用:
n:查找下一個
N:查找上一個
(對於?查找,移動方向也相應變化)
n/N命令前也可使用數字n來查第n個
可視模式的功能是選擇區域,選擇區域後的其餘操做參見其餘模式!!
v:字符選擇,可進行字符的逐個選擇;
選中從進入可視模式時的光標位置到當前光標位置的內容,光標控制能夠參見普通模式的控制命令以提升效率。
V:按行選擇,參照字符選擇。
Ctrl+v:列塊選擇
選擇屏幕的一個矩形區域;以進入可視模式時的光標位置爲一角,以光標當前位置爲對角。光標控制能夠參見普通模式的控制命令以提升效率。
o:把光標移動到矩形的對角
O:把光標移動到水平位置的另外一角
i:在光標前插入字符
I:在行首插入字符
a:在光標後插入字符
A:在行尾插入字符
o:在光標下發插入空行
O:在光標上方插入空行
s:刪除光標位置字符,並進入insert模式 (=c+l)
S:刪除光標所在行,並進入insert模式 (=c+c)
C:刪除光標位置到行尾的字符,並進入insert模式 (=c+$)
退回普通模式:ESC
三種操做符
d:delete 把選擇的內容存入寄存器。
c:change 把選擇的內容存入寄存器,使用新的內容覆蓋原內容。
y:copy 把選中的內容拷貝到寄存器中。
yw:拷貝一個單詞
ynw:拷貝n個單詞
ye: 拷貝一個單詞,不包括單詞結尾空格。
yne:拷貝n個單詞。
yy:拷貝一行
nyy:浮躁從光標所在行起的n行,注意n在最前面。
y$:拷貝從當前位置到行尾
yG:拷貝從當前位置到文尾
三種操做符存入寄存器的內容都適用於p/P粘貼命令。
三種操做符與普通命令組合的思想一致!!!
動做:普通模式下的控制命令;動做前有操做符時,動做的做用是覆蓋一段文本;動做所走過的軌跡即操做符將要操做的對象。
如:d+w,結果是刪除光標位置(含)到下以單詞首(不含)直接的字符。
daw:刪除一個單詞,包含單詞的邊界(空格)。
da【:刪除[ ]整個塊,包含符號自己;
da<;da(;da{;da";da'同理
diw:刪除一個單詞,不含單詞的邊界。
di【:刪除[ ]內的字符,不含符號自己;
di<;di(;di{;di";di'同理
常見文本對象:
ap 一個段落; aW 一個字符串;as 一個句子; at 一個HTML標籤