Vim 學習指南

做者:耀耀php

出處:http://www.linuxeden.com/html/news/20130820/142667.htmlhtml


Vim 學習指南

來源:開源中國社區  做者:耀耀
  關注咱們:     

你想盡量快地自學vim(爲你們所熟知的最好的編輯器) 。這是我學習的方法:從細處入手而後慢慢掌握全部技巧。linux

Vim 六十億美圓的編輯器vim

設計優良,強壯,快速。緩存

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

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

  1. 適應
  2. 感受溫馨
  3. 感受很好,強壯,快速
  4. 使用vim的高級技能

本課程結束時你將成爲一個vim高手。工具

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

第一層次 – 適應

  1. 安裝vim
  2. 運行vim
  3. 什麼也別作,讀!

在標準的編輯器裏,寫一些東西到屏幕上只須要在鍵盤上輸入就足夠了,在Vim中不是這樣。Vim在普通模式裏,讓咱們轉到插入模式,鍵入字符i。url

你應該感受好一點了,能像在標準編輯器裏輸入了,回到普通模式只需按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).

更強

知道怎麼有效的移動對vim是很是重要的。請不要跳過這一節。

1. NG→定位到第N行

2. gg→1G的快捷方式——定位到第一行

3. G→定位到最後一行

4. 單詞移動:

1. w→定位到當前單詞的開始位置,

2. e→ 定位到當前單詞的最後位置. 默認狀況下, 單詞有字符和下劃線組成. 咱們稱一句話是由一組被空格符號分隔的單詞組成. 若是你想定位一句話,那麼就用大寫字符:

1. W→ 定位到當前句子的開始位置,

2. E→ 定位到當前這句話的最後位置.

Word moves example

如今讓咱們來談談幾個很是有效率的移動:

%: Go to the corresponding(,{,[.

• *(resp.#) : go to next (resp. previous) occurrence of the word under the cursor

相信我,最後的三行命令是精華。

更快

記住了vi移動的重要性?這裏就是緣由。大多數命令使用下面這種通用格式:

<開始位置><命令><結束位置>

例如: 0y$意味着

  • 0→ 跳到本行開頭
  • y→ 從這裏開始複製
  • $→ 直到本行結束

咱們也可使用ye,從當前位置複製到單詞的末尾。可是y2/foo 會一直複製到第二個foo出現的地方。

但對於y(複製), d(刪除), v(visual 選擇), gU(大寫), gu(小寫)等等命令都是真實的。

第四層次 – Vim 超能量

使用上述的命令,你就以爲很爽了。可是如今,這裏纔是殺手鐗。正由於其中有些特性,我才使用vim的。

在當前行移動:0^$g_fFtT,;

  • 0→ 跳到第一列
  • ^→ 跳到當前行的第一個字符
  • $→ 跳到最後一列
  • g_→ 跳到這行的最後一個字符
  • fa→ 跳到這行a字母的下一個出現的地方。(對比 ; )會查找下一個(上一個)地方
  • t,→ 跳到,字符的前一個字符.
  • 3fa→ 在這行中查找a出現的第三個位置.
  • F 和 T→ 與f和t類似, 可是方向相反.
  • Line moves

一個有用的提示:dt"→刪除全部的直到」。

區域選擇 : <命令>a<對象> 或 <命令>i<對象>

這些命令僅僅能用在可視化模式的一個操做後。可是他們至關的有用。他們的主要模式有:

<命令>a<對象> 和 <命令>i<對象>

命令能夠是任何命令,例如 , d(刪除),y(拉取),v(進入可視化模式)。對象能夠是: w一個單詞,W一個單詞 (擴展的),s一個句子,p一個段落。並且也能夠是普通的字符, 例如",',),},]。

假設如今光標在 (map (+) ("foo")) 這個字符串的第一個o上。

  • vi"→ 將會選擇 foo
  • va"→ 將會選擇 "foo"
  • vi)→ 將會選擇 "foo"
  • va)→ 將會選擇 ("foo")
  • v2i)→ 將會選擇 map (+) ("foo")
  • v2a)→ 將會選擇 (map (+) ("foo"))

Text objects selection

矩形選擇塊:<C-v>

矩形選擇塊可以方便的對多行代碼進行註釋。 如:0<C-v><C-d>I-- [ESC]

  • ^→ 將光標定位到這行第一個非空格字符
  • <C-v>→ 選擇開始位置
  • <C-d>→ 向下移動 (也可以使用 jjj 或者 % , 其餘…)
  • I-- [ESC]→ 用 -- 來註釋每一行
Rectangular blocks

提示:若是你的剪貼板在Windows中是非空的話,那麼你就不得不使用<C-q>來代替<C-v>。

實現:<C-n>和<C-p>.

在插入模式中:只要打出單詞的首字母,而後按<C-p>,神奇的事情就發生了...

Completion

宏命令 : qa 作的一些事,@a,@@

qa 把你的動做記錄在了寄存器 a 中。而後@a 就會將存在寄存器中的動做重現,就好像你重新打了一邊。@@是將你最後一次執行的宏命令再次執行的快捷鍵。

事例

在只有數字1的一行上, 像這樣鍵入命令:

  • qaYp<C-a>q→
    • qa開始記錄。
    • Yp記錄這一行。
    • <C-a>增長數字大小。
    • q中止記錄。
  • @a→ 在1下面寫2
  • @@→ 在2下面寫3
  • 如今鍵入 100@@ 就將會產生一個到 103 的自增列。

Macros

可視化模式選擇: v, V, <C-v>

咱們已經看到過<C-v>例子,這裏還有v和V。一旦已經選擇好了,你能夠:

  • J→ 讓全部行鏈接在一塊兒
  • <(對比>) → 向左(右)對齊.
  • =→ 自動對齊
Autoindent

在可視化模式所選擇的行的末尾添加一些東西:

  • <C-v>
  • 跳到目的行 (jjj 或者 <C-d> 或者 /patternor%等等…)
  • $跳到行末尾
  • A, 寫入一些文本,[按] ESC 鍵.

Append to many lines

分割:: split 和 vsplit

這些是很重要的命令,因此你應該在:help split看看。

  • :split→ 建立一個水平分割窗口t (:vsplit 建立一個豎直分割窗口)
  • <C-w><dir>: dir是hjklor←↓↑→中任何一個。用來切換分割窗口。
  • <C-w>_(對比<C-w>|) : 用來最大化水平(豎直)分割窗口的大小
  • <C-w>+(對比<C-w>-) : 增長 (減少) 分割窗口

Split

小結

這些是我常用的90%的命令。我建議你天天學習一到兩個命令。在兩到三週以後,你將會感受到vim在你手上使用的是如此的強大。

學習vim更多的是記憶訓練。值得高興的是vim誕生了一些很是好的工具和優秀的文檔。當你很是熟悉大部分基本命令以後就可使用vimtutor了。另外,你應該仔細的閱讀這頁 ::help usr_02.txt.

而後,你要去學習瞭解寄存器,插件已經其它的功能。學習vim就像學鋼琴同樣,全部的都要掌握好。

英文原文:Learn Vim Progressively

參與翻譯(4人)LesusGarfieltszkiti耀耀

本文轉自:開源中國社區 [http://www.oschina.net]
本文標題:Vim學習指南
本文地址:
http://www.oschina.net/translate/learn-vim-progressively

相關文章
相關標籤/搜索