Vim 上手不求人( gif 版)

Vim 上手不求人

前言

親愛的猴子們,大家對 Vim 不陌生吧。
Vim 用起來看起來很爽,平時我們沒少背 Vim 的快捷鍵,不過,大家是知道的,背的學的使用太少,很快就從入門到放棄了。
我們還是隻有一臉崇拜的看着 Devops 老哥在 Vim 裏面熟練的敲敲打打。
不過,我最近找到一種學習的方法,不用太多功夫就能把 Vim 玩的 666。
下面,我會將自己學習的辦法和實用小技巧分享給大家,Vim 從入門到上手不求人。

Idea + Vim > 2

在我們日常工作中,會使用 Idea 來寫代碼;
我們如果能在我們熟悉的 Idea 裏面用 Vim 來寫代碼,想必上手肯定是非常快速的,這也是上一篇文章程序猿划水指南中提到過的刻意練習—我們通過在 Idea 安裝 Vim 插件來讓自己從舒適區進入了學習區。
接下來,我們從最簡單的安裝插件開始,給大家分享 Vim 的使用方式和我的心得體會。

安裝插件

Preferences->Plugins->Marketplace->在搜索框輸入 Vim
plugin.gif
安裝 IdeaVimExtension 插件以後,可以在~/.ideavimrc裏面修改 vim 的配置。
這裏有個小提示,我發現 Idea2019.3 版本同時安裝 IdeaVimIdeaVimExtension 在重啓以後會報錯。
如果,你也遇到這種情況了,不要着急,先重啓一次 Idea,然後先安裝 IdeaVim 然後再安裝 IdeaVimExtension
現在,相信插件已經安好了,在 Idea 重啓的時間裏,我們從最簡單的模式說起吧。

三個模式

衆所周知,Vim 擁有 3 個 Model(模式)分別是:

  • Normal Model 用於在窗口編輯和移動,也可以進行快捷編輯
  • View Model 用於選擇大塊內容的操作(複製、剪切、刪除、替換)
  • Insert Model 用於插入內容

3model.gif

我們在使用 Vim 編碼時,選擇合適的模式,會達到事半功倍的效果。
下面,我們來看看進入 Vim 以後,我們怎麼移動光標的。

快速移動(Normal Model & View Model)

  • 0行頭 $行尾,很多操作後面加 0$ 也是一樣的到行頭和行尾
  • j k上下 h l左右 與箭頭一樣可以達到目的。熟練以後,我們就能在高大上的 66 鍵的HHKB上左右騰挪,上下翻飛了。
  • w b 移動下一個或上一個單詞頭上

jkhlwb_move.gif

  • ( )方法(空行)開頭和方法結尾 { }方法(空行)間上下移動

method_move.gif
一開始,大家未免會不太習慣,不過建議大家還是儘量使用 Vim 的快捷鍵進行移動。
當熟練以後,你就可以脫離鼠標的束縛了;有沒有發現突然寫代碼快了很多呢!

剪切操作(Normal Model & View Model)

Normal Model 下我們會有很多便捷的剪切&刪除操作,並不需要到Insert Model中。並且,Vim 中的剪切和刪除是一個用法,只是看你把剪切進去的內容是否粘貼出來。
充分利用 Vim 中各種快捷操作我們可以達到快速編輯內容的目的。

  • x: 剪切光標選擇的內容,Normal Model 剪切一個字母,View Model 剪切所有選中內容
  • dw:剪切一個詞

替換操作(Normal Model & View Model)

  • Normal Model下,按r然後再按字母,就能用輸入的字母替換選中的字母。
  • p 粘貼剛剛剪切掉的內容,如果在 View Model 下選擇了部分內容,那實際上是替換了選中內容。

可是我們要替換多個地方怎麼辦呢,不用着急。有 2 種辦法,我們來一個個試試看吧。

  • 在 View Model 下選中需要粘貼部分,然後用y進行復制。再使用 View Model 選中需要替換部分的時候通過使用 "0p 進行替換。其中的 0是數字零,這是內容在 Vim 寄存器中的編號,它和棧結構一樣,先進後出。我們通過改變0即可以粘貼不同的

Tip::reg可以查看相關的所有寄存器內容

0p_replace.gif

  • 另外一種方式就是在Normal Model下按:進入命令模式,然後在出現的命令行中輸入下列的命令進行替換
:s/from/to - 用from替換當前行第一個to。
:s/from/to/g - 用from替換當前行所有的to。
:a,bs/from/to/g - 用from替換文件a行到b行所有的to。 

line_replace.gif

由於 Idea 的 Vim 插件對於替換支持的並不好,所以,建議直接在選中的內容上使用 Ctrl+C Ctrl+V 來操作。

編輯操作(Normal Model & Insert Model)

  • i: 在光標前插入; I: 在當前行第一個非空字符前插入; gI: 在當前行第一列插入;
  • a: 在光標後插入; A: 在當前行最後插入;
  • o: 在下面新建一行插入; O: 在上面新建一行插入;

insert.gif

行操作(Normal Model)

  • D:剪切從光標到行尾;dd剪切光標所在一行
  • yy複製光標當前一行
  • dj/d↑剪切光標所在和上一行,dk/d↓ 剪切光標所在和下一行。

row_options.gif

一些小技巧

操作相關

  • 按住 shift 後上下移動會更快
  • J可以把下面一行縮進到當前光標一行
  • ~可以改變光標選中部分內容的大小寫
  • u是撤銷剛剛的操作,Ctrl+r是重做剛剛撤銷的操作。
  • r+<Enter> 將光標後面內容移動到下面新增的一行
  • 修改()之間的內容 ci( ,剪切()之間的內容 di( 複製()之間的內容 yi(
  • zz 將當前行移動到屏幕中央。

配置相關

  • Vim 還要一些 map 指令,大家可以把一些指令組合到一起然後寫到 config 文件中。這樣你也會擁有你獨一無二的 Vim 了(具體功能後面可能會寫專門文章介紹)
nnoremap <space>i<space><esc>
nnoremap <enter>i<end><enter><esc>

上面是我的 map 配置,這樣是爲了在Normal Model中可以用空格鍵和回車鍵來操作內容空格和換行

其他

  • 將你使用的所有 IDE 和編輯器都安裝上 Vim 插件
  • 把好用的快捷指令放在一個小記事本上,一旦忘記立馬打開查看,來回幾次你就會記住
  • 使用 Vim Vundle 來管理你的 Vim 插件吧,你會發現 Vim 越來越好玩的。

只要堅持就一定會勝利

只需要幾天,也只需要幾個業務,你會突然發現,原來 Vim 用起來也並沒有那麼難。
另一方面,對 Vim 熟練 以後,不管是 Idea 還是 VScode,不管是 Mac 還是 Linux;對於你來說都是它們都是一個 IDE ,無縫切換,渾然天成
還有,建議大家收藏本網頁,用來操作查詢。
大家發現了其他更好用的操作套路,一定要與我分享,獨樂樂不如衆樂樂嘛。
最後,把我的快捷鍵記事本分享給大家。

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