vim內(nèi)不需退出sudo保存文件
:w !sudo tee %
光標移動
zz //讓光標所在的行居屏幕中央
zt //讓光標所在的行居屏幕最上一行 t=top
zb //讓光標所在的行居屏幕最下一行 b=bottom
?內(nèi)移動
w 正向移動到相鄰單詞的?字符(W以空格和TAB為分隔符)
b 逆向移動到相鄰單詞的?字符
B 向前?個單詞,以空格和TAB為分隔符
e 正向移動到相鄰單詞的尾字符(E以空格和TAB為分隔符)
ge 逆向移動到相鄰單詞的尾字符
0 數(shù)字0唬格,左移光標到本?的開始
^ 移動光標理疙,到本?的第?個?空字符
$ 右移光標,到本?的末尾
g_ 到本?最后?個不是 blank 字符的位置
- 上????
+ 下????
?移動
H 跳轉到當前屏幕的第??
M 跳轉到本屏顯示的中間??
L 跳轉到最后??
2H 表示將光標移到屏幕的第2?
3L 表示將光標移到屏幕的倒數(shù)第3?
z + enter 是當前?成為屏幕的第??
100z + enter 移動第100?到屏幕的頂部,記得鍵?100z之后再回?
z + - 是當前??成為最后??
z. 把當前?移動到屏幕中央
ctrl + f 在?件中前移??(相當于 page down)厚掷;
ctrl + b 在?件中后移??(相當于 page up)绿聘;
ctrl + d 往下滾動半屏
ctrl + u 往上滾動半屏
整個?件移動
gg 跳到??
G 調(diào)到尾?
nG或ngg或:n+回? 跳轉到n?
% 跳到另?邊括號
配合查找字符的?式移動
fa 正向移動到第?個字符 a 處(重復“;”,回退“,”)
Fa 逆向移動到第?個字符 a 處(重復“;”办绝,回退“,”)
tx 往右移動到 x 字符前(重復“;”伊约,回退“,”)
Tx 往左移動到 x 字符后(重復“;”,回退“,”)
?相鄰的單詞或字符間移動
8w 正向移動到相隔?個單詞的?字符
4Fa 逆向移動到第四個 a 字符
更?范圍的移動
* 當光標停留在?個單詞上孕蝉,* 鍵會在?件內(nèi)搜索該單詞屡律,并跳轉到下?處;
# 當光標停留在?個單詞上降淮,# 在?件內(nèi)搜索該單詞超埋,并跳轉到上?處;
搜索匹配
/text 向后搜索
佳鳖?text 向前搜索
:g/targetWord 全局搜索
:%s/oldWord/newWord/gc 全局替換
:%s/string//gn 統(tǒng)計查詢字符串的個數(shù)k
n 搜索下?個同樣的內(nèi)容
N 搜索上?個同樣的內(nèi)容
刪除
gg dG 刪除全部內(nèi)容
d0 刪除???
dl 刪除當前字符霍殴, dl=x
dh 刪除前?個字符
dd 刪除當前?
dj 刪除當前及下??
dk 刪除當前及上??
dw 刪除到下?個單詞開頭(diw 刪除整個單詞)
de 刪除到本單詞末尾
dE 刪除到本單詞末尾包括標點在內(nèi)
db 刪除到前?個單詞
dB 刪除到前?個單詞包括標點在內(nèi)
dap 刪除整個段落
d$ 刪除當前字符之后的所有字符(本?)
D 刪除當前字符??尾。D=d$
jdG 刪除當前?之后所有?(不包括當前?)
:1,10d 刪除1-10?
:11,$d 刪除11?及以后所有的?
:1,$d 刪除所有?
J 刪除兩?之間的空?系吩,實際上是合并兩?
ggvGJ 合并所有?
rc ? c 替換光標所指向的當前字符来庭;
nrc ? c 替換光標所指向的前 n 個字符;
5rA ? A 替換光標所指向的前 5 個字符穿挨;
x 刪除光標所指向的當前字符月弛;
nx 刪除光標所指向的前 n 個字符肴盏;
3x 刪除光標所指向的前 3 個字符;
dw 刪除光標右側的字帽衙;
ndw 刪除光標右側的 n 個字叁鉴;
3dw 刪除光標右側的 3 個字;
db 刪除光標左側的字佛寿;
ndb 刪除光標左側的 n 個字幌墓;
5db 刪除光標左側的 5 個字;
dd 刪除光標所在?冀泻,并去除空隙常侣;
ndd 刪除(剪切) n ?內(nèi)容,并去除空隙;
3dd 刪除(剪切) 3 ?內(nèi)容弹渔,并去除空隙;
替換
s ?輸?的正?替換光標所指向的字符胳施;
S 刪除當前?,并進?編輯模式肢专;
ns ?輸?的正?替換光標右側 n 個字符舞肆;
nS 刪除當前?在內(nèi)的 n ?,并進?編輯模式博杖;
cw ?輸?的正?替換光標右側的字椿胯;
cW ?輸?的正?替換從光標到?尾的所有字符(同 c$ );
ncw ?輸?的正?替換光標右側的 n 個字剃根;
cb ?輸?的正?替換光標左側的字哩盲;
ncb ?輸?的正?替換光標左側的 n 個字;
cd ?輸?的正?替換光標的所在?狈醉;
ncd ?輸?的正?替換光標下?的 n ?廉油;
c$ ?輸?的正?替換從光標開始到本?末尾的所有字符;
c0 ?輸?的正?替換從本?開頭到光標的所有字符苗傅。
:%s/oldWord/newWord/gc 全局替換
:%s/foo/bar/g //全文范圍內(nèi)搜索foo替換為bar,g表示全局
:s/foo/bar/g //表示當前行替換所有
:'<,'>s/foo/bar/g //選區(qū)抒线,在Visual模式下選擇區(qū)域后輸入:,Vim即可自動補全為 :'<,'>渣慕。
:5,12s/foo/bar/g //2-11行
.,+2s/foo/bar/g //當前行.與接下來兩行+2:
//命令結尾的g即是替換標志之一嘶炭,表示全局global替換(即替換目標的所有出現(xiàn))。 還有很多其他有用的替換標志:
//空替換標志表示只替換從光標位置開始摇庙,目標的第一次出現(xiàn):
:%s/foo/bar
//i表示大小寫不敏感查找旱物,I表示大小寫敏感:
:%s/foo/bar/i
//# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
//c表示需要確認遥缕,例如全局查找"foo"替換為"bar"并且需要確認:
:%s/foo/bar/gc
//回車后Vim會將光標移動到每一次"foo"出現(xiàn)的位置卫袒,并提示
replace with bar (y/n/a/q/l/^E/^Y)?
//按下y表示替換,n表示不替換单匣,a表示替換所有夕凝,q表示退出查找模式宝穗, l表示替換當前位置并退出。^E與^Y是光標移動快捷鍵
復制粘貼
yy 拷?當前?
nyy 拷?當前后開始的n?码秉,?如2yy拷?當前?及其下??
:1,10 co 20 將1-10?插?到第20?之后
:1,$co$ 將整個?件復制?份并添加到?件尾部
正常模式下按v(逐字)或V(逐?)進?可視模式逮矛,然后?jklh命令移動即可
選擇某些?或字符,再按y即可復制
ddp 交換當前?和其下??
xp 交換當前字符和其后?個字符
正常模式下按v(逐字)或V(逐?)進?可視模式转砖,然后?jklh命令移動即可
選擇某些?或字符须鼎,再按d即可剪切
ndd 剪切當前?之后的n?。利?p命令可以對剪切的內(nèi)容進?粘貼
:1,10d 將1-10?剪切府蔗。利?p命令可將剪切后的內(nèi)容進?粘貼晋控。
:1,10 m 20 將第1-10?移動到第20?之后(:1,10mo20)。
x 剪切當前字符
3x 剪切當前光標開始向后三個字符
X 剪切當前字符的前?個字符姓赤。X=dh
p 粘貼到下??或右側赡译,修改和刪除的數(shù)據(jù)?動到粘貼板中
P 粘貼到上??或左側
如果是要替換別的單詞,則先按 v 進? visual mode不铆,選中要替換的單詞蝌焚,再
按粘貼即可,粘貼板中就換成了被替換的單詞
yiw (yank inner word)在?個單詞的任意字?使?,就復制該單詞
yw 則只是復制從光標所在字?到詞尾的部分
撤銷和重復
u 撤銷最近?次修改 undo
. 重復最后?條修改正?的命令
U 撤銷所有修改
ctrl + r 取消最后?次的撤銷 redo