========
一些基本概念:
- operator(操作符): 例如命令
d
,y
,c
等; - motion(移動): 例如移動光標的命令
h j k l
,w
,e
,b
等; - text-objects(文本對象): 例如
s
(表示句子sentence)流酬,w
表示單詞,p
表示段落(Paragraphs)等等虏肾。
除了hjkl這些基本命令之外矢门, 你還要知道“更高級的”組合命令:
"operator + motion"組合的方式干旁,例如: -
ct.
將字符'.'前面的所有都刪除. -
y^
復(fù)制到行首.
"operator + text-objects"的命令組合方式, 例如:
-
ciw
: 剪切光標處單詞, 不包括空格 -
caw
: 剪切光標處單詞, 包括空格 -
dip
: 刪除一段
移動光標:
下上左右:JKHL
移動到上一個單詞首b
移動到下一個單詞首w
,移動3個單詞3w
<----b w---->
w/b是在單詞首部移動,在單詞尾部移動為ge/e
<----ge e---->
如果是大寫的B涎显,W挚瘟,gE叹谁,E,則只將“空格”作為單詞分隔符乘盖,例如'gloal.member'被當作一個完整的詞焰檩。
^
光標移動到行開頭
$
光標移動到行結(jié)尾
fx
光標移動到下一個x處,3fx移動到第三個x處
Fx
光標移動到前面的x處
tx
订框,Tx
類似析苫,移動到x之前
ma
標記當前行, 標簽可以是a-z任意字符穿扳。
~a
跳轉(zhuǎn)到a標簽衩侥。
標簽跳轉(zhuǎn)C-]
跳轉(zhuǎn)回C-O
或C-T
或按兩下~
Ctrl + 左/右鍵 也可以跳轉(zhuǎn)/返回
跳轉(zhuǎn)到匹配的括號%
移動到文件首gg
有趣的命令9999k
作用也是移動到文件首
移動到文件尾G
跳轉(zhuǎn)到第33行33G
或者輸入 :33
也可以跳轉(zhuǎn)
如移動到文檔1/3處 ,直接輸入33%
zz
將當前光標所在的行移到屏幕中間 矛物,大寫的ZZ是保存&退出文檔茫死。
zt
當前光標所在的行移到屏幕頂,助記t=top 履羞。
zb
當前光標所在的行移到屏幕底峦萎,助記b=bottom 。
H, M, L
分別為移動到文檔的head, middle, last的位置吧雹。
C-F
, C-B
向前向后翻頁
Linux 終端( Terminal)中常用的快捷鍵
ctrl+f 向前移動一個字符
ctrl+b 向后移動一個字符
alt+f 向前移動一個單詞
alt+b 向后移動一個單詞
ctrl+a 移動到當前行首
ctrl+e 移動到當前行尾
編輯:
使用c
骨杂,d
和x
刪除的字符仍然存在寄存器中,用p
可以粘貼出來雄卷。
-
c
= 替換(change)搓蚪,刪除文本并進入插入模式, -
d
=刪除(delete),一般組合使用, -
y
=復(fù)制(yank)着帽, -
p
= 粘貼(paste), -
x
= 刪除字符雳灾;
刪除,剪切, 復(fù)制一行= cc
,dd
冯凹,yy
刪除,剪切, 復(fù)制多行= 3cc
谎亩,4dd
,5yy
刪除,剪切, 復(fù)制到行尾= c$
,d$
匈庭,y$
或者大寫C, D, Y, 也是到行尾
刪除,剪切,復(fù)制到行開頭= c^
夫凸,d^
,y^
或者c0
阱持,d0
夭拌,y0
從光標開始, 刪除,剪切,復(fù)制到單詞尾=cw
,dw
衷咽,yw
刪除,剪切,復(fù)制整個單詞= daw
, caw
, yaw
注意區(qū)別yw
和yaw
, 例如光標在"test" 的e位置, yaw
復(fù)制整個單詞, yw
只復(fù)制est鸽扁。
tips: 重復(fù)操作的快捷鍵是".", 比如daw刪除一個單詞后想繼續(xù)刪除下一個單詞,就可以按"."
刪除換行符(兩行合并為一行): J
撤銷上次操作(還原): u
反撤銷(重做): C-R
撤銷對一行的所有操作(還原一行): U
镶骗,第二次按U會撤銷上一次U的操作桶现。
只用u和C-R即可回到任何一個操作狀態(tài)。
可視模式下的U/u是大小寫轉(zhuǎn)換卖词。
- 光標前插入 =
i
- 光標后插入 =
a
- 行首插入 =
I
- 行尾插入 =
A
在當前行的下面另起一行巩那,并進入插入狀態(tài)o
在當前行的前面另起一行吏夯,并進入插入狀態(tài)O
CTRL-T
is working with tags stack
CTRL-O
is working with jumplist
Tag stack and jumplist are different list in vim, but they might have same items when you jumping through tags (eg. usingCTRL-]
)
外部程序的粘貼/復(fù)制:
GVIM的“+號寄存器”可以與外部程序復(fù)制/粘貼:
- 復(fù)制
"+y
- 粘貼
"+p
- 剪切
"+x
注: 以上快捷鍵在命令可視模式/模式有效此蜈,先按雙引號進入寄存器模式,再按加號,然后按y/p/x
如果在插入模式, 先按ctrl+R
進入寄存器模式(會出現(xiàn)"
號), 再按對應(yīng)的寄存器編號,系統(tǒng)共享寄存器編號是+號.
在VIM正常模式下,ctrl+r
是重做噪生。
" 加入到_vimrc文件中:
map <C-c> "+y "加號寄存器-復(fù)制
map <C-v> "+p "加號寄存器-復(fù)制
map <C-x> "+x "加號寄存器-復(fù)制
map <C-s> :w<cr> " 保存
多窗口:
- 關(guān)閉分屏窗口:
Ctrl+W c
或Ctrl+W q
- 上下分割窗口:
Ctrl+W s
- 左右分割窗口:
Ctrl+W v
Ctrl+w Ctrl+]
新窗口打開定義
多文件buff操作:
:E
或者:Explore
瀏覽目錄
:edit filename
編輯文件裆赵;
:ls
列出所有buffer;
:b 2
或:buffer 2
將切換到相關(guān)的buffer
:b2
關(guān)閉buff=2的文件跺嗽;
:bn
刪除文件緩沖(關(guān)閉文件)战授。
zz
將當前編輯的行置于屏幕中間。
ZZ
保存退出桨嫁。
:q!
不保存退出, :qa!
表示退出所有buff并不保存
:wq
保存退出
搜索和替換:
搜索
/include
正向搜索植兰,n下一個,N上一個
?include
反向搜索
/\<the\>
全詞匹配搜索單詞"the"璃吧,助記開頭<楣导,結(jié)尾>
#
號是向后搜索匹配單詞,*
向前搜索匹配單詞, gd
類似*號的功能.
正則搜索:
/^the
搜索the開頭的行(針對行畜挨,而非單詞)
/here$
搜索here結(jié)尾的行
點號匹配任何單字符筒繁,如果要搜索的內(nèi)容本身包含點號,則用.代替巴元,比如:
/the.
搜索"the"匹配的內(nèi)容
/the\.
搜索"the."匹配的內(nèi)容
替換:
最常用的替換命令就是:%s/1/2/g
了, 其中%符號表示范圍整個文件, s表示搜索, 最后的g表示全局替換.
如果要制定范圍內(nèi)替換, 比如在31~文件尾范圍內(nèi)替換: :31,$s/hello/world/gc
, 最后的c參數(shù)表示替換過程中需要確認(confirm).
可視模式:
shift + v
: 行選擇模式
大寫V
同上
所選擇區(qū)域轉(zhuǎn)換為大寫U
毡咏,轉(zhuǎn)換為小寫u
x
和d
在可視模式都是刪除
>
和<
在可視模式為右移,左移
列模式:
Ctrl+v
(Windows上是Ctrl+Q
)進入列模式,
使用方向鍵或H J K L
選擇行, 用c
或d
刪除, shift+i插入(大寫I鍵),
插入完成后, 按esc后生效.
代碼折疊:
可以zf
進行折疊, 用zo
打開折疊,也可以方向鍵向右打開折疊,zc
關(guān)閉折疊.
Session
Session可以保存此次編輯的狀態(tài), 比如已經(jīng)打開的文件, 當前編輯位置等.
- 保存Session:
mksession session.vim
- 載入Session:
source session.vim