1. 程式人生 > >【 Linux 】Vim學習指南

【 Linux 】Vim學習指南

你想盡可能快地自學vim(為大家所熟知的最好的編輯器) 。這是我學習的方法:從細處入手然後慢慢掌握所有技巧。

Vim 六十億美元的編輯器

設計優良,強壯,快速。

學習vim並把它作為你的下一個文字編輯器,據我所知沒有比它更好的編輯器,學起來難但出奇的好用。

我建議你按下附4個步驟學習Vim:

  1. 適應
  2. 感覺舒適
  3. 感覺很好,強壯,快速
  4. 使用vim的高階技能

本課程結束時你將成為一個vim高手。

但在我們開始之前,先提醒一下。剛開始學習vim會有點痛苦,它很費時間,有點像玩樂器一樣。不要指望能像其他編輯器一樣花3天以內的時間便能很好的使用它,事實上,這肯定要花2周而不是3天。

推薦閱讀:

第一層次 – 適應

  1. 安裝vim
  2. 執行vim
  3. 什麼也別做,讀!

在標準的編輯器裡,寫一些東西到螢幕上只需要在鍵盤上輸入就足夠了,在Vim中不是這樣。Vim在普通模式裡,讓我們轉到插入模式,鍵入字元i。

你應該感覺好一點了,能像在標準編輯器裡輸入了,回到普通模式只需按ESC鍵即可。

你現在知道了如何在插入和普通模式之間轉換,下面是你在普通模式下需要記住的指令:

  • i→ 插入模式. 按ESC鍵返回普通模式
  • x→ 刪除游標所在的字元
  • :wq→ 儲存退出(:w 儲存,:q 退出)
  • dd→ 刪除(拷貝)當前行
  • p→ 貼上

推薦:

  • hjkl(高度推薦) → 基本的游標移動 (←↓↑→), hj按行移動。
  • :help <command>→ 顯示關於<command>的幫助,可以使用help不帶<command>獲得常規幫助。

只有5個命令,一開始只需掌握這些,當適應了這些命令後(大概需要一天或更多的詩句),你可以轉到第二層級了。

但首先,稍回顧一下普通模式。在標準編輯器裡,要複製的話你需要使用ctrl鍵(Ctrl-c)。實際上,當你按下ctrl鍵時所有的按鍵的意義都改變了。在vim普通模式下就像在ctrl鍵自動按下的情況下使用編輯器。

最後的補充:

  • 我使用<C-λ>代替Ctrl-λ
  • 命令後附帶回車,比如我若是寫:q,我是指:q<enter>

第二層 - 爽一把

你知道,命令是由需求所定。是時候學習更多命令了。下面這些是我的建議:

  1. 插入模式變種命令:

    • a→ 在游標後插入
    • o→ 在當前行之後插入新行
    • O→ 在當前行之前插入新行
    • cw→ 替換從游標到單詞結束
  2. 基本移動命令

    • 0→ 跳到第一列
    • ^→ 跳到本行第一個非空字元
    • $→ 跳到本行末尾
    • g_→ 跳到本行最後一個非空字元
    • /pattern→ 搜尋pattern
  3. 複製/貼上

    • P→ 在當前位置之前貼上,記住 p 是在當前位置之前貼上.
    • yy→ 複製當前行,與dd和P命令相比更簡單。
  4. 取消/恢復

    • u→ 取消
    • <C-r>→ 恢復
  5. 載入/儲存/退出/修改 檔案(快取)

    • :e <檔案路徑>→ 開啟
    • :w→ 儲存
    • :saveas <檔案路徑>→ 儲存到這個檔案
    • :x,ZZ或者:wq→ 儲存和退出 (:x 如果可能的話,只儲存)
    • :q!→ 退出但不儲存,使用:qa!,即使在快取中還有已經修改的也會退出。
    • :bn(對比:bp) → 顯示下一個(上一個)檔案快取

花些時間學習所有這些命令。一旦完成後,你應該就能完成在像在其它編輯器中所有事情。也許,你可能還會覺得有點笨手笨腳。但是跟著我進入下一個層次,你就會發現為什麼vim值得你額外付出的努力。

第三層次——更好,更強,更快

為達到這一步表示祝賀!現在我們可以開始這有趣的東西。在第三層次,我們將只討論命令,它相容舊的vi編輯器。

更好

讓我們看看vim是怎麼幫你做重複事情的。

1. .→(點)可以重複最後一個命令,

2. N<命令>會重複命令N次。

一些例子,開啟一個檔案然後寫入下面內容:

• 2dd→ will delete 2 lines • 3p→ will paste the text 3 times • 100idesu [ESC]→ will write “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu” •.→ Just after the last command will write again the 100 “desu”. •3.→ Will write 3 “desu” (and not 300, how clever).