Vim的使用介紹

Vim是什么

Vim是從vi發(fā)展出來的一個(gè)文本編輯器篡帕,其代碼補(bǔ)充屑迂,編譯及錯(cuò)誤跳轉(zhuǎn)方便編程的功能特別豐富,在程序員中被廣泛使用竿音。和Emacs并列成為類Unix系統(tǒng)用戶最喜歡的編輯器。并且在vi的基礎(chǔ)上也做了很多改進(jìn)拴驮,增加了多級(jí)撤銷春瞬、多窗口操作、崩潰后也可以恢復(fù)套啤、增加了穩(wěn)定性宽气、關(guān)鍵字自動(dòng)補(bǔ)全、上下文自動(dòng)補(bǔ)全等功能潜沦。

Vim的工作模式

Vim一共有6種工作模式

  • 普通模式:使用vim打開一個(gè)文件時(shí)默認(rèn)模式萄涯,也叫命令模式,允許用戶通過各種命令瀏覽代碼唆鸡、滾屏等操作涝影。
  • 插入模式:也可以叫做編輯模式,在普通模式下敲擊 i 就進(jìn)入插入模式争占,允許用戶通過鍵盤輸入燃逻、編輯。
  • 命令行模式:在普通模式下臂痕,先輸入冒號(hào):伯襟,接著輸入命令,就可以通過配置命令對vim進(jìn)行配置了握童,如改變顏色主題姆怪、顯示行號(hào)等,這些配置命令也可以保存到/etc/vim/vimrc配置文件中舆瘪,每次打開默認(rèn)配置執(zhí)行片效。
  • 可視化模式:在普通模式下敲擊前盤上的 v 鍵红伦,就進(jìn)入可視化模式英古,然后移動(dòng)光標(biāo)就可以選中一塊文本,常用來完成文本的賦值昙读、粘貼召调、刪除等操作。
  • 替換模式:如果我們想修改某個(gè)字符蛮浑,不需要先進(jìn)入插入模式唠叛,刪除,然后再輸入新的字符沮稚,直接在普通模式下艺沼,敲擊R鍵就可以直接替換。
  • EX模式:類似于命令行模式蕴掏,可以一次運(yùn)行多個(gè)命令
    vim的各種工作模式可以通過不同的鍵進(jìn)行切換障般,用戶統(tǒng)一使用ESC鍵返回到普通模式调鲸。
  1. 光標(biāo)移動(dòng)命令
單個(gè)字符移動(dòng):
h:  向左移動(dòng)
l:  向右移動(dòng)
j:  向下移動(dòng)
k:  向上移動(dòng)
xh:  向左移動(dòng)x個(gè)字符距離

單詞移動(dòng):
w:  將光標(biāo)移動(dòng)到下一個(gè)單詞的開頭
b:  將光標(biāo)移動(dòng)到前一個(gè)單詞的開頭
e:  將光標(biāo)移動(dòng)到下一個(gè)單詞的詞末
E:  移動(dòng)到單詞的結(jié)尾(忽略標(biāo)點(diǎn)符號(hào))
ge:  將光標(biāo)移動(dòng)到上一個(gè)單詞的詞末
2w:  指定移動(dòng)的次數(shù)

行移動(dòng):
$:  將光標(biāo)移動(dòng)到當(dāng)前行的行尾
0:  將光標(biāo)移動(dòng)到當(dāng)前行的行首
^:  將光標(biāo)移動(dòng)到當(dāng)前行的第一個(gè)非空字符(行首和當(dāng)前行非空字符不是一個(gè)位置)
2|:  移到當(dāng)前行的第2列
fx:  將光標(biāo)移動(dòng)到當(dāng)前行的第一個(gè)字符x上
3fx: 將光標(biāo)移動(dòng)到航前行的第3個(gè)字符x上
tx:   將光標(biāo)移動(dòng)到目標(biāo)字符x的前一個(gè)字符上
fx和tx可以通過;和,進(jìn)行重復(fù)移動(dòng),一個(gè)是正向重復(fù)挽荡,一個(gè)是反向重復(fù)
%:  用于符號(hào)間的移動(dòng)藐石,它會(huì)在一對()、[]定拟、{}之間跳躍

文本塊移動(dòng):
(:  移到當(dāng)前句子的開頭
):  移到下一個(gè)句子的開頭
{:  移到當(dāng)前一段的開頭
}:  移到下一段的開頭
[[:  移到當(dāng)前這一節(jié)的開頭
]]:  移到下一節(jié)的開頭

在屏幕中移動(dòng)
xG:  跳轉(zhuǎn)到指定的第x行于微,G移動(dòng)到文件按末尾,``(2次單引號(hào))返回到跳轉(zhuǎn)前的位置
gg:  移動(dòng)到文件開頭
x%:  移動(dòng)到文件中間青自,就使用50%
H:  移動(dòng)到home
M:  移動(dòng)到屏幕中間
L:  移動(dòng)到一屏末尾
ctrl+G:  查看當(dāng)前的位置狀態(tài)
  1. 滾屏與跳轉(zhuǎn)
半屏滾動(dòng):  ctrl+u/ctrl+d
全屏滾動(dòng):  ctrl+f/ctrl+b

定位光標(biāo)的位置
zz:  將光標(biāo)置于屏幕的中間
zt:  將光標(biāo)移動(dòng)到屏幕的頂部
zb:  將光標(biāo)移動(dòng)到屏幕的底部

設(shè)置跳轉(zhuǎn)標(biāo)記
mx,my,mz設(shè)置三個(gè)位置
`x,`y,`z跳轉(zhuǎn)到設(shè)置
  1. 文本插入操作
i:  在當(dāng)前光標(biāo)的前面插入字符
a:  在當(dāng)前光標(biāo)的后面追加字符
o:  在當(dāng)前光標(biāo)的下一行行首插入字符
I:  在一行的開頭添加文本
A:  在一行的結(jié)尾處添加文本
O:  在光標(biāo)當(dāng)前行的上一行插入文本
s:  刪除當(dāng)前光標(biāo)處的字符并進(jìn)入到插入模式
S:  刪除光標(biāo)所在處的行株依,并進(jìn)入到插入模式
u:  撤銷修改
  1. 文本刪除操作
字符刪除
x:  刪除當(dāng)前光標(biāo)所在處的字符
X:  刪除當(dāng)前光標(biāo)左邊的字符

單詞刪除
dw:  刪除一個(gè)單詞(從光標(biāo)處到空格)
daw:  無論光標(biāo)在什么位置,刪除光標(biāo)所在的整個(gè)單詞(包括空白字符)
diw:  刪除整個(gè)單詞文本延窜,但是保留空格字符不刪除
d2w:  刪除從當(dāng)前光標(biāo)開始處的2個(gè)單詞
d$:  刪除從光標(biāo)到一行末尾的整個(gè)文本
d0:  刪除從光標(biāo)到一行開頭的所有單詞
dl:  刪除當(dāng)前光標(biāo)處的字符=x
dh:  刪除當(dāng)前光標(biāo)左邊的字符=X

行刪除
dd:  刪除當(dāng)前光標(biāo)處的一整行=D
5dd:  刪除從光標(biāo)開始處的5行代碼
dgg:  刪除從光標(biāo)到文本開頭
dG:  刪除從光標(biāo)到文本結(jié)尾

行合并
J:  刪除一個(gè)分行符勺三,將當(dāng)前行與下一行合并
  1. 文本復(fù)制,剪切與粘貼
y:  復(fù)制需曾,p:粘貼
yw:  復(fù)制一個(gè)單詞
y2w:  復(fù)制2個(gè)單詞
y$:  復(fù)制從當(dāng)前光標(biāo)到行結(jié)尾的所有單詞
y0:  復(fù)制從當(dāng)前光標(biāo)到行首的所有單詞
yy:  復(fù)制一整行
2yy:  復(fù)制從當(dāng)前光標(biāo)所在行開始的2行

復(fù)制文本塊
    1.首先進(jìn)入visual模式:v
    2.移動(dòng)光標(biāo)選擇文本
    3.復(fù)制與粘貼的操作
  1. 文本的修改與替換
cw:  刪除從光標(biāo)處到單詞結(jié)尾的文本并進(jìn)入到插入模式
cb:  刪除從光標(biāo)處到單詞開頭的文本并進(jìn)入到插入模式
cc:  刪除一整行并進(jìn)入到插入模式
~: 修改光標(biāo)下字符的大小寫
r:  替換當(dāng)前光標(biāo)下的字符
R:  進(jìn)入到替換模式
xp:  交換光標(biāo)和下一個(gè)字符
  1. 文本的查找與替換
/string   正向查找
?string   反向查找

設(shè)置高亮顯示
    :set hls
    *按鍵將當(dāng)前光標(biāo)處的單詞高亮顯示吗坚,使用n瀏覽下一個(gè)查找高亮的結(jié)果
:s/old/new   將當(dāng)前行的第一個(gè)字符串old替換為new
:s/old/new/g   將當(dāng)前行的所有字符串old替換為new
:90s/old/new/g  將指定行的所有字符串old替換為new
:90,93s/old/new/g  將指定范圍的行的所有字符串old替換為new
:%s/old/new/g   將文本中所有的字符串old替換為new
:%s/old/new/gc  依次替換每個(gè)字符串關(guān)鍵字
:%s/^struct/int/g   將所有以struct開頭的字符串替換為int
  1. 撤銷修改、重做與保存
u:  撤銷上一步的操作呆万。
Ctrl+r:  將原來的插銷重做一遍
U:  恢復(fù)一整行原來的面貌(文件打開時(shí)的文本狀態(tài))
q:  若文件沒有修改商源,直接退出
q!:  文件已經(jīng)被修改,放棄修改退出
wq:  文件已經(jīng)被修改谋减,保存修改并退出
e!:  放棄修改牡彻,重新回到文件打開時(shí)的狀態(tài)
  1. 編輯多個(gè)文件
文件和緩沖區(qū)的區(qū)別
文件是保存在磁盤上的,而打開的文件的文件是在內(nèi)存中出爹,在內(nèi)存中有一個(gè)緩沖區(qū)庄吼,用來存放打開的文件。vim每次打開文件時(shí)都會(huì)創(chuàng)建一個(gè)緩沖區(qū)严就,vim支持打開多個(gè)文件
:buffers   查看緩沖區(qū)列表==ls
:buffer N  根據(jù)緩沖區(qū)列表的編號(hào)跳轉(zhuǎn)到指定緩沖區(qū)
:bnext/bprev  遍歷緩沖區(qū)列表
:bfirst/blast  分別調(diào)到緩沖區(qū)列表的開頭和結(jié)尾
:write   將緩沖區(qū)的修改保存到磁盤上
:edit! e!  放棄緩沖區(qū)的修改总寻,恢復(fù)到文件打開時(shí)的狀態(tài)
:edit file  編輯另一個(gè)文件
:wnext   保存當(dāng)前緩沖區(qū)的修改并跳轉(zhuǎn)到緩沖區(qū)列表中的下一個(gè)文件
:set autowrite
  1. 標(biāo)簽頁與折疊欄
標(biāo)簽頁的新建:tabedit file/tab split
標(biāo)簽頁的切換: tabn/tabp
按鍵:gt/gT
標(biāo)簽頁的關(guān)閉
    tabclose 
關(guān)閉當(dāng)前的標(biāo)簽頁: tabonly
創(chuàng)建一個(gè)折疊
    zf200G:將光標(biāo)和200行之間的代碼折疊起來
折疊的打開與關(guān)閉
    za:  打開和關(guān)閉折疊
    zr/zm: 一層一層地打開和關(guān)閉折疊
    zR/zM: 分別打開和關(guān)閉所有的折疊
折疊鍵的光標(biāo)移動(dòng)
    zj: 跳轉(zhuǎn)到下一個(gè)折疊處
    zk: 跳轉(zhuǎn)到上一個(gè)折疊處
刪除折疊
    zd: 刪除光標(biāo)下的折疊
    zD: 刪除光標(biāo)下的折疊以及嵌套的折疊
    zE: 刪除所有的折疊標(biāo)簽
    創(chuàng)建的折疊當(dāng)退出vim之后就失效了。
  1. 多窗口操作
分割窗口
    split/vsplit filename
窗口間跳轉(zhuǎn)
    ctrl+w hjkl
    ctrl+w w
移動(dòng)窗口
    ctrl+w HJKL
調(diào)整窗口尺寸
    ctrl+w +/-  調(diào)整窗口的高度
    ctrl+w </>  調(diào)整窗口的寬度
    ctrl+w = 所有的窗口設(shè)置相同的尺寸
    :resize n將當(dāng)前窗口尺寸調(diào)整為N行
關(guān)閉窗口
    close: 關(guān)閉一個(gè)窗口
    qall: 退出所有窗口
    qall!: 放棄修改梢为,退出所有窗口
    wqall: 保存并退出所有窗口
    wall: 保存所有窗口

附上Vim鍵盤命令圖

1.jpg

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渐行,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子铸董,更是在濱河造成了極大的恐慌祟印,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粟害,死亡現(xiàn)場離奇詭異蕴忆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)悲幅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門套鹅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驻襟,“玉大人,你說我怎么就攤上這事芋哭〕烈拢” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵减牺,是天一觀的道長豌习。 經(jīng)常有香客問我,道長拔疚,這世上最難降的妖魔是什么肥隆? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮稚失,結(jié)果婚禮上栋艳,老公的妹妹穿的比我還像新娘。我一直安慰自己句各,他們只是感情好吸占,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凿宾,像睡著了一般矾屯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上初厚,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天件蚕,我揣著相機(jī)與錄音,去河邊找鬼产禾。 笑死排作,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亚情。 我是一名探鬼主播妄痪,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼势似!你這毒婦竟也來了拌夏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤履因,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盹愚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栅迄,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年皆怕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毅舆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片西篓。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖憋活,靈堂內(nèi)的尸體忽然破棺而出岂津,到底是詐尸還是另有隱情,我是刑警寧澤悦即,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布吮成,位于F島的核電站,受9級(jí)特大地震影響辜梳,放射性物質(zhì)發(fā)生泄漏粱甫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一作瞄、第九天 我趴在偏房一處隱蔽的房頂上張望茶宵。 院中可真熱鬧,春花似錦宗挥、人聲如沸乌庶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽安拟。三九已至,卻和暖如春宵喂,著一層夾襖步出監(jiān)牢的瞬間糠赦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工锅棕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拙泽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓裸燎,卻偏偏與公主長得像顾瞻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子德绿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

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

  • Linux是一種自由和開放源代碼的類UNIX操作系統(tǒng)荷荤。目前運(yùn)用領(lǐng)域最廣泛、使用人數(shù)最多的操作系統(tǒng)移稳,下面介紹一下Li...
    劉圣凱閱讀 391評論 0 0
  • VIM簡介 Vim是一個(gè)類似于Vi的著名的功能強(qiáng)大蕴纳、高度可定制的文本編輯器,在Vi的基礎(chǔ)上改進(jìn)和增加了很多特性个粱。[...
    饑人谷_LEO閱讀 106評論 0 2
  • Vim幾句話介紹Vim是Unix系統(tǒng)上的文本編輯軟件(你該不會(huì)不知道什么是文本編輯軟件吧9琶),在windows上也...
    何必遠(yuǎn)方閱讀 3,130評論 0 3
  • 公司新員工學(xué)習(xí)有用到,Vim官網(wǎng)的手冊又太大而全稻薇,而網(wǎng)上各方資料要么不全面嫂冻,要么不夠基礎(chǔ)。在網(wǎng)上搜集各方資料塞椎,按照...
    夏時(shí)花開閱讀 2,467評論 1 31
  • 清姝一直崇尚基金定投桨仿,也一直強(qiáng)調(diào),基金定投雖然不用止損案狠,但是一定要止盈服傍。 那么問題來了怎么止盈? 很多人用個(gè)人收益...
    清姝閱讀 1,288評論 2 51