VIM 學習系列之基本命令,常用命令

供開始學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
vim
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拌蜘,一起剝皮案震驚了整個濱河市杆烁,隨后出現(xiàn)的幾起案子牙丽,更是在濱河造成了極大的恐慌,老刑警劉巖兔魂,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烤芦,死亡現(xiàn)場離奇詭異,居然都是意外死亡析校,警方通過查閱死者的電腦和手機构罗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來智玻,“玉大人遂唧,你說我怎么就攤上這事〉跎荩” “怎么了盖彭?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長页滚。 經(jīng)常有香客問我召边,道長,這世上最難降的妖魔是什么裹驰? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任隧熙,我火速辦了婚禮,結(jié)果婚禮上幻林,老公的妹妹穿的比我還像新娘贞盯。我一直安慰自己,他們只是感情好沪饺,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布躏敢。 她就那樣靜靜地躺著,像睡著了一般随闽。 火紅的嫁衣襯著肌膚如雪父丰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音蛾扇,去河邊找鬼攘烛。 笑死,一個胖子當著我的面吹牛镀首,可吹牛的內(nèi)容都是我干的坟漱。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼更哄,長吁一口氣:“原來是場噩夢啊……” “哼芋齿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起成翩,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤觅捆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后麻敌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栅炒,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年术羔,在試婚紗的時候發(fā)現(xiàn)自己被綠了赢赊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡级历,死狀恐怖释移,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寥殖,我是刑警寧澤玩讳,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站扛禽,受9級特大地震影響锋边,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜编曼,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一豆巨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掐场,春花似錦往扔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嚷堡,卻和暖如春蝗罗,著一層夾襖步出監(jiān)牢的瞬間艇棕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工串塑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沼琉,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓桩匪,卻偏偏與公主長得像打瘪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子傻昙,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 公司新員工學習有用到闺骚,Vim官網(wǎng)的手冊又太大而全,而網(wǎng)上各方資料要么不全面妆档,要么不夠基礎(chǔ)僻爽。在網(wǎng)上搜集各方資料,按照...
    甲魚閱讀 161,015評論 43 685
  • 公司新員工學習有用到过吻,Vim官網(wǎng)的手冊又太大而全进泼,而網(wǎng)上各方資料要么不全面,要么不夠基礎(chǔ)纤虽。在網(wǎng)上搜集各方資料,按照...
    夏時花開閱讀 2,480評論 1 31
  • Ubuntu的發(fā)音 Ubuntu杰刽,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音王滤。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,373評論 9 467
  • 參考鏈接 插入排序:希爾排序(Shell's Sort) 白話經(jīng)典算法系列之三 希爾排序的實現(xiàn) 希爾排序是1959...
    夢即是幻閱讀 430評論 0 0
  • 從他第一次找我去蹭課開始贺嫂,我才開始有意識到,班里還有這么一個男生存在~ 我之前并不知道自己為什么會答應(yīng)陪他一起去蹭...
    瑯?gòu)值暗?/span>閱讀 312評論 0 0