供開始學vim的同學參考蓉冈,更多精彩文章https://deepzz.com
下面基本是vim的基本用法城舞,剛開始學習可能有些不習慣轩触。但貴在堅持,即使不習慣家夺,也要堅持使用脱柱,做到不經(jīng)過思考就能操作,你會發(fā)現(xiàn)真的很方便拉馋。
當然榨为,樓主學習這些命令主要是在后面用vim編輯器寫代碼打基礎(chǔ),如果有興趣煌茴,你可以查看:VIM 學習系列之打造智心目中理想的編輯器一随闺。
很多操作可以通過不同的命令達到,我這里只列出常用的蔓腐。
基礎(chǔ)命令
vim #命令行中進入vim編輯器
Esc #退出i(插入模式)矩乐,取消操縱
:! command #暫時離開vi到指令模式下執(zhí)行command命令,如:!ls 執(zhí)行l(wèi)s命令
:sh #進入shell命令行,執(zhí)行完命令后ctrl+d退出重新進入vim編輯繼續(xù)編輯 在shell命令下回论,執(zhí)行ctrl+l完成清屏
:r filename #讀入一個文件內(nèi)容,并寫入到當前編輯器中
:w newfilename #將該編輯器中的內(nèi)容寫入到一個新文件中
:w #在編輯的過程中保存文件,相當于word中的ctrl+s
:wq #保存文件并退出
:x #寫文件(如果有做修改)并退出
:q! #強制退出,不保存
:sav filename #保存為
vim + filename #進行文件最后一行進行編輯
vim +n filename #進入文件第n行進行編輯
復(fù)制命令
yy #將當前行的內(nèi)容放入臨時緩沖區(qū)
nyy #將 n 行的內(nèi)容放入臨時緩沖區(qū)
p #將臨時緩沖區(qū)中的文本放入光標后
P #將臨時緩沖區(qū)中的文本放入光標前
"(a-z)nyy #復(fù)制 n 行放入名字為圓括號內(nèi)的可命名緩沖區(qū)散罕,省略 n 表示當前行
"(a-z)ndd #刪除 n 行放入名字為圓括號內(nèi)的可命名緩沖區(qū),省略 n 表示當前行
"(a-z)p #將名字為圓括號的可命名緩沖區(qū)的內(nèi)容放入當前行后
"(a-z)P #將名字為圓括號的可命名緩沖區(qū)的內(nèi)容放入當前行前
移動命令
h #向左移一個字符
j #向下移一行
k #向上移一行
l #向右移一個字符
w #移到下一個字的開頭
W #移到下一個字的開頭透葛,忽略標點符號
b #移到前一個字的開頭
B #移到前一個字的開頭笨使,忽略標點符號
e #移到下一個字的結(jié)尾
E #移到下一個字的結(jié)尾,忽略標點符號
L #移到屏幕的最后一行
M #移到屏幕的中間一行
H #移到屏幕的第一行
G #移到文件的最后一行
gg #移動到文件開頭
gd #移動到變量定義處
20gg #移動到第20行僚害,或則(20G)
20| #移動到20列
% #移動到匹配的括號
( #移到句子的開頭
) #移到句子的結(jié)尾
{ #移到段落的開頭
} #移到下一個段落的開頭
0(|) #移到當前行的第一列
^ #移到當前行的第一個非空字符
$ #移到當前行的最后一個字符
+(Enter) #移到下一行的第一個字符
- #移到前一行的第一個非空字符
'' #移動上次光標位置的位置硫椰,是兩個'
插入命令
a #在光標后插入文本
A #在當前行插入文本
i #在光標前插入文本
I #在當前行前插入文本
o #在當前行的下邊插入新行
O #在當前行的上邊插入新行
s #刪除光標所在處字符,并進入插入模式
S #刪除光標所在的行萨蚕,并進入插入模式
刪除命令
x #刪除光標處的字符
dw #剪切至下一個字的開頭
dG #剪切行靶草,直到文件結(jié)束
dd #剪切整行
db #剪切光標前面的字
d$ #從光標處刪除到行
:n,md #從第 m 行開始往前刪除 n 行
修改命令
cl #更改當前字符
cw #修改到某個單詞的結(jié)尾位置
cW #修改到某個以空格作為分隔符的單詞的結(jié)尾位置
cb #修改到某個單詞的開始位置
cB #修改到某個以空格作為分隔符的單詞的開始位置
ctc #修改當前行直到下一個字符c所出現(xiàn)位置之間的內(nèi)容
C #修改到某一行的結(jié)尾
cc #修改當前行
查找與替換
/text #在文件中向前查找 text
?text #在文件中向后查找 text
n #在同一方向重復(fù)查找
N #在相反方向重復(fù)查找
f<字符> #行內(nèi)向后搜索<字符>并跳轉(zhuǎn)到第一個匹配的位置(非常實用)
F<字符> #在當前行向后查找<字符>并跳轉(zhuǎn)到第一個匹配的位置(非常實用)
:g/text1/s/text2/text3 #查找包含 text1 的行,用 text3 替換 text2
:g/text/command #在所有包含 text 的行運行 command 所表示的命令
:v/text/command #在所有不包含 text 的行運行 command 所表示的命令
:%s/old/new/g #將所有出現(xiàn)的old替換為new
:%s/onward/forward/gi #將所有onward替換為forward岳遥,大小寫不敏感
:%s/old/new/gc #替換前確認
:2,35s/old/new/g #將第2行到第35行之間的old替換為new
:5,$s/old/new/g #將第5行到文件結(jié)尾的old替換為new
:%s/^/hello/g #在每一行開頭加入hello
:%s/$/Harry/g #在每一行結(jié)尾加入Harry
:%s/ *$//g #刪除每行末尾無用空格
:g/string/d #刪除所有包含string的行
:v/string/d #刪除所有不包含string的行
:s/Bill/Steve/ #替換當前行第一個Bill為Steve
:s/Bill/Steve/g #替換當前行中所有Bill
:%s/Bill/Steve/g #替換文件中所有Bill
:%s/^M//g #刪掉DOS保存文件中(^M)
:%s/\r/\r/g #Transform DOS carriage returns in returns
:%s#<[^>]\+>##g #刪除html標簽但是保留文本
:%s/^\(.*\)\n\1$/\1/ #刪除所有連續(xù)出現(xiàn)過兩次的行奕翔,保留一行
Ctrl+a #遞增光標下的數(shù)字
Ctrl+x #遞減光標下的數(shù)字
ggVGg? #文本轉(zhuǎn)換為 Rot13
撤銷,重復(fù)命令
u #撤消最后一次修改
U #撤消當前行的所有修改
. #重復(fù)最后一次修改
, #以相反的方向重復(fù)前面的 f浩蓉、F派继、t 或 T 查找命令
; #重復(fù)前面的 f、F捻艳、t 或 T 查找命令
"np #取回最后第 n 次的刪除(緩沖區(qū)中存有一定次數(shù)的刪除內(nèi)容驾窟,一般為 9)
n #重復(fù)前面的 / 或 ? 查找命令
N #以相反方向重復(fù)前面的 / 或 ? 命令
ctrl+r #恢復(fù)操作
大小寫轉(zhuǎn)換命令
~ #光標處內(nèi)容進行大小寫轉(zhuǎn)換
Vu #整行小寫
VU #整行大寫
g~~ #整行大小寫反轉(zhuǎn)
vEU #單詞轉(zhuǎn)為大寫
vE~ #單詞大小寫反轉(zhuǎn)
ggguG #所有文本小寫
gggUG #所有文本大寫
:set ignorecase #搜索中忽略大小寫
:set smartcase #搜索中忽略大小寫,除非搜索詞中存在大小寫字母
:%s/\<./\u&/g #將所有單詞首字母大寫
:%s/\<./\l&/g #將所有單詞首字母小寫
:%s/.*/\u& #將每行第一個字母大寫
:%s/.*/\l& #將每行第一個字母小寫
屏幕調(diào)整
ctrl+e(^e) #將屏幕上滾一行
ctrl+y #將屏幕下滾一行
ctrl+u #將屏幕上滾半頁
ctrl+d #將屏幕下滾半頁
ctrl+b #將屏幕上滾一頁
ctrl+f #將屏幕下滾一頁
ctrl+l #重繪屏幕
其它命令
8zf #折疊當前行8行代碼
zo #打開折疊行(按方向鍵也可以)
ctrl+o #光標返回到以前的位置认轨。相當于光標移動的“撤銷”
ctrl+i #光標返回到后來的位置绅络。相當于光標移動的“恢復(fù)”
ctrl+v #批量注釋:ctrl+v進入塊模式選擇,選擇要操作的行。按I(在行首插入)恩急,輸入//杉畜,按Esc結(jié)束。
經(jīng)驗之談
#通常: <num> + command 是重復(fù)多少次命令的意思衷恭,如
10k(j) #向上(下)移動10行此叠,重復(fù)執(zhí)行k命令10次,下同匾荆。
10h(l) #向左(右)移動10列
10w(b) #向后(前)移動10個word
5cc #修改從當前行開始的5行內(nèi)容
5dd #剪切從當前行開始的5行內(nèi)容
最后引用一張圖片助記:

vim