vim超能力

現在,我們向你介紹的是VIM殺手級的功能。下面這些功能是我只用vim的原因。

在當前行上移動光標: 0 ^$ f F t T , ;
  • 0 → 到行頭
  • ^ → 到本行的第一個非blank字符
  • $ → 到行尾
  • g_ → 到本行最後一個不是blank字符的位置。
  • fa → 到下一個爲a的字符處,你也可以fs到下一個爲s的字符。  這個還不錯
  • t, → 到逗號前的第一個字符。逗號可以變成其它字符。
  • 3fa → 在當前行查找第三個出現的a。
  • F 和 T → 和 f 和 t 一樣,只不過是相反方向。

還有一個很有用的命令是 dt" → 刪除所有的內容,直到遇到雙引號—— "。

區域選擇 <action>a<object> 或 <action>i<object>

在visual 模式下,這些命令很強大,其命令格式爲

<action>a<object><action>i<object>

  • action可以是任何的命令,如 d (刪除), y (拷貝), v (可以視模式選擇)。
  • object 可能是: w 一個單詞, W 一個以空格爲分隔的單詞, s 一個句字, p 一個段落。也可以是一個特別的字符:"、 '、 )、 }、 ]。

假設你有一個字符串 (map (+) ("foo")).而光標鍵在第一個 的位置。

  • vi" → 會選擇 foo.
  • va" → 會選擇 "foo".
  • vi) → 會選擇 "foo".
  • va) → 會選擇("foo").
  • v2i) → 會選擇 map (+) ("foo")
  • v2a) → 會選擇 (map (+) ("foo"))   這個不錯


塊操作: <C-v>

塊操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

  • ^ → 到行頭
  • <C-v> → 開始塊操作
  • <C-d> → 向下移動 (你也可以使用hjkl來移動光標,或是使用%,或是別的)
  • I-- [ESC] → I是插入,插入“--”,按ESC鍵來爲每一行生效。


在Windows下的vim,你需要使用 <C-q> 而不是 <C-v> ,<C-v> 是拷貝剪貼板。

自動提示: <C-n> 和 <C-p>

在 Insert 模式下,你可以輸入一個詞的開頭,然後按 <C-p>或是<C-n>,自動補齊功能就出現了……


宏錄製: qa 操作序列 q, @a, @@
  • qa 把你的操作記錄在寄存器 a。
  • 於是 @a 會replay被錄製的宏。
  • @@ 是一個快捷鍵用來replay最新錄製的宏。

示例

在一個只有一行且這一行只有“1”的文本中,鍵入如下命令:

  • qaYp<C-a>q
    • qa 開始錄製
    • Yp 複製行.
    • <C-a> 增加1.
    • q 停止錄製.
  • @a → 在1下面寫下 2
  • @@ → 在2 正面寫下3
  • 現在做 100@@ 會創建新的100行,並把數據增加到 103.


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

前面,我們看到了 <C-v>的示例 (在Windows下應該是<C-q>),我們可以使用 v V。一但被選好了,你可以做下面的事:

  • J → 把所有的行連接起來(變成一行)
  • <> → 左右縮進
  • = → 自動給縮進 (陳皓注:這個功能相當強大,我太喜歡了)


在所有被選擇的行後加上點東西:

  • <C-v>
  • 選中相關的行 (可使用 j 或 <C-d> 或是 /pattern 或是 % 等……)
  • $ 到行最後
  • A, 輸入字符串,按 ESC。


分屏: :split 和 vsplit.

下面是主要的命令,你可以使用VIM的幫助 :help split. 你可以參考本站以前的一篇文章VIM分屏

  • :split → 創建分屏 (:vsplit創建垂直分屏)
  • <C-w><dir> : dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一個,其用來切換分屏。
  • <C-w>_ (或 <C-w>|) : 最大化尺寸 (<C-w>| 垂直分屏)
  • <C-w>+ (或 <C-w>-) : 增加尺寸


轉自  http://coolshell.cn/articles/5426.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章