Vim快速入門

原文地址:http://ghui.me/post/2013/08/vim/

Vim由unix系統中的vi編輯器擴充增強而來,且vim幾乎完全兼容vi。vim可以運行在linux,mac,windows系統中。但在linux及mac系統中使用較多。利用vim可以編輯各種文檔,借助于vim豐富的插件,vim可以擴展出許多功能,甚至是各種語言的IDE等等

1.為什么要用VIM

:Edit Text at the Speed of Thought

2.VIM工作模式

vim中有四種模式,分別是:Normal Mode(普通模式),Insert Mode(插入模式), Visual Mode(視圖模式), Command-Line Mode(命令行模式)

a. Normal Mode

我們通過在終端中執行vim filename的方式打開或創建一個文件默認進入的就是此模式,在此模式下我們可以執行大多數vim命令,比如:h,j,k,l,A,i,H,等等。

b. Insert Mode

在Normal Mode下我們是不能輸入內容的,如果要編輯文檔我們需要進入Insert Mode,按i即可進入,進入Insert Mode 后我們可以在窗口左下角看到–INSERT–提示。這時我們就可以隨意編輯文檔了。

c. Normal 與Insert相互切換

在normal mode下一般可以通過i進入insert mode,當我們需要執行某些normal mode下的命令時,可以通過Esc鍵返回到normal mode.所以vim用戶經常按Esc鍵是一個很常見的動作,而且在normal mode下按Esc鍵不會產生任何效果,所以當你不確定當前模式的時候,可以多按幾次Esc鍵就一定可以回到normal mode下,然后再根據需要執行后續的其它操作。

這里建議大家記英文,因為不同的人對這幾個模式的翻譯不同,可能會造成誤解。比如我就曾見過把Normal Mode翻譯為命令模式的,當然這樣翻譯也是有道理的,因為大部分命令都是在這個模式下運行的。這里模式有四個,但我們大多情況下都是在Normal與Insert模式下工作的。這里先介紹這兩個模式。

3.VIM常用命令入門

(無特殊說明所有指令均是指normal mode下的指令)

A.光標移動指令

  • h(左),j(下),k(上),l(右)
  • G將光標移動到最后一行的行首的第一個非空白字符處
  • gg作用與G相反,將光標移動到行首第一個非空白字符處
  • H將光標移動到編輯窗口頂部第一行行首位置。注意與gg的區別
  • L將光標移動到編輯窗口底部最后一行的行首位置。
  • $將光標移動到行尾
  • 0將光標移動到行首
  • nggnG將光標移動到n所代表的行首處 (其中n代表行號)

(其實,我們完全可以通過上下左右鍵來移動光標,但是如果你熟悉了上面這些指令,將會讓你的操作更加高效。)

B.插入指令

  • i在光標所覆蓋字符的前面插入
  • I在行首第一個非空白字符前插入
  • o在光標所在行下面一行插入
  • O在光標所在行上面一行插入

(執行以上指令后vim將自動由normal mode切換到insert mode)

C.保存指令

  • :w將當前vim編輯窗口中的內容保存到本地磁盤中,因為vim不會自動保存。為了防止數據的丟失,我們可以在每編輯一段時間后就執行一下此命令,將當前的內容保存到磁盤中,以防止意外斷電等原因造成的數據丟失。
  • :q直接退出vim。有時候我們可能只是用vim來查看一下文件的內容,并不需要做修改,當我們查看完后,可以執行此命令直接退出。
  • :wq保存并退出vim。此命令主要用在當我們完成編輯任務后可直接執行此命令,完成保存并退出的動作。
  • :q!強制退出vim。當你通過vim查看某個文件并不小心作個修改后,可通過此命令直接退出,此命令將不保存修改。

D.刪除指令

  • x刪除光標所覆蓋的字符。
  • [n]dd刪除光標所在的一整行或者從當前行開始的n行。
  • d$刪除從光標所在位置向后的一整行。
  • d[n]G刪除從第n行開始,直到當前行的所有文本。若不指定n則刪除從當前行開始到文件最后一行的所有文本。
  • dw刪除一個字。注意:此命令對于英文刪除的是一個單詞,但對于漢語刪除的是連續的一段漢字直到標點或英文字符為止。
  • de此命令與dw相似,但不包含字與字之間的空格。

當然,我們完全可以通過Baskspacedel來達到刪除的目的,但作為一個高效的編輯器vim提供的有更高效的命令。其實,在以上刪除指令前面我們可以跟上一個數字,代表此刪除操作執行的次數。比如,如果我們想連續刪除兩個字符可以這樣2x

E.撤銷指令

  • u對應windows中的Ctrl-Z,即撤消上一次的操作,可通過連續執行撤消多次。
  • U撤消最近一次對某行的所有操作。此命令的動作只能局限在最近一次發生修改的某行內。
  • Ctrl-R相當于windows中的Ctrl-Y,即撤消撤消操作,也可連續執行以達到多次undo the undos的效果。

F.復制粘貼指令

  • p相當于windows中的Ctrl-V。但這個指令執行的前題是要先選定需要復制的文字。這就要用到下面這個指令v.
  • v進入視圖模式。然后可以通過hjkl移動光標來選定文字。因為只有在這個模式下,才可以通過指令選定文字(當然你也可以通過鼠標選定文字)
  • y復制。將選定的文字,復制到粘帖板。

綜上,要完成在windows下Ctrl-C,Ctrl-V的效果,大致需要按照下面這樣的步驟:

  • v進入visual mode.
  • 通過hjkl移動光標選定需要復制的文本.
  • y將選定內容復制到粘貼板.
  • 移動光標到合適位置。
  • p執行粘貼操作。

G.查找指令

  • /正向查找。 在normal mode下按/鍵,然后再輸入需要查尋的字符串,按Enter鍵即可進行搜索。
  • n若想查看下一個,只需在上一個命令的基礎上按n,即可查看下一個匹配的字符串。
  • Nn作用相反。查找上一個匹配的字符串。

H.替換指令

  • :s/old/new在光標所在行中查找old并用new來替換查找到的第一個old.
  • :s/old/new/g在光標所在行中查找old并用new替換此行中所有的old.
  • :#,#s/old/new/g##所表示的行的范圍內查找old,并用new全部替換之。
  • :%s/old/new/g在整個文件中查找old并用new替換。
  • :%s/old/new/gc在整個文件中依次查找old并給用戶提示是否替換當前old。過程類似于:find next,replace?.如果確定就替換,并跳到下一個;如果n就直接跳到下一個,重復以上過程。

I.翻頁指令

  • Ctrl-F向下滾動一屏
  • Ctrl-B向上滾動一屏
  • Ctrl-D向下流動半屏
  • Ctrl-U向上滾動半屏

J.其它常用指令

  • C替換當前行光標之后的所有數據。
  • [n]cc替換當前文本行或從當前文本行開始的n行數據。
  • [n]yy復制當前文本行或從當前文本行開始的n行數據。
  • r Enter換行
  • :set nu顯示行號
  • :set nonu取消顯示行號
  • :!執行外部命令,例如:!ls顯示目錄。
  • :n1,n2 m n3將從n1行開始到n2行的內容移動到n3行之后。
  • :n1,n2 co n3將從n1行開始到n2行的內容復制到n3行之后。

4.總結

個人覺得掌握好上面這些命令,VIM入門應該是沒問題了。但要是想真正能享受到VIM編輯的高效性,除了對基本命令非常熟悉外,盲打是最低的要求了。否則,還不如用windows下面那些可視化的編輯器來的快。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,480評論 2 379

推薦閱讀更多精彩內容

  • 1.一級目錄1.1二級目錄1.1.1三級目錄 一、實驗介紹 1.1 實驗內容 本次實驗將學習vim中的不同模式和一...
    粵川閱讀 273評論 0 1
  • 常用模式: 普通模式(Normal mode) 插入模式(Insert mode) 命令行模式(Command l...
    demil閱讀 530評論 0 0
  • dpkg 學習 安裝mysql apt-get install mysql-server-5.6 apt-get ...
    sharonji閱讀 448評論 0 0
  • 陽光從旅行箱里掉出來 花都在跳舞 蝴蝶和蜜蜂都在舞 舞拉丁 華爾茲 小螞蟻蹲在石頭下乘涼 他想跑啊 跳啊 還有飛翔...
    汐的島閱讀 153評論 0 0
  • 一對養眼又才華橫溢的夫婦,體育封面模特和靈魂歌手在一個月前公布了珍貴的家庭照片。 她叫洛娜,孩子出生于今年4月,非...
    童園稚趣閱讀 291評論 0 1