硬核乾貨分享,歡迎關注【Java補習課】成長的路上,我們一起前行 !

《高可用系列文章》 已收錄在專欄,歡迎關注!

概述

Vim是一個功能強大高度可定製的文字編輯器; 具體有多強大,我現在還沒體會到(orz)。在日新月異的網際網路時代中,vim 可以算是一個歷史悠久的產物,從誕生到現在都沒有別的編輯器能替代(感興趣可瞭解一下 Emacs)。目前主流的VSCodeIntellij 全家桶Chrome等,都支援/提供了 vim plugin

學習材料

準備工作

vim 功能強大,相信計算機行業的各位大佬都清楚。但是在我們的工作中,沒有vim一樣能夠進行工作,能夠排查問題,能過編輯頁面等。

學習 vim 是一個枯燥且難熬的過程,你需要2周時間的苦練,而不是3天熱度。希望大家能夠堅持下來,擺脫 CV工程師title,起碼也得多個h,j,k,l

附一張超清 VIM 鍵點陣圖 ,原圖地址:http://cenalulu.github.io/linux/all-vim-cheatsheat/

IDEA 安裝 VIM

IntelliJ IDEA -> Perferences -> Plugins

網路不好的情況下,可在官網直接下載 Pluginhttps://plugins.jetbrains.com/plugin/164-ideavim

VIM 移動命令

初階移動

  • h, j,k,l: 左,下,上,右 移動
  • 0,^,$:行首,行首字母,行尾
  • gg,G,50G:檔案頭,檔案尾,跳轉到指定行

演示操作:

h-> j->k->l->0->^->$

進階移動

  • w & Ww右移一個單詞(標點分割), W右移一個字串(空格/換行分割)
  • b & Bb左移一個單詞(標點分割), B右移一個字串(空格/換行分割)
  • { & }: 移動到段部 , 換行符分割
  • Ctrl + u/d/翻頁

演示操作:

w -> b -> W -> B

實際開發中移動操作

比如,檢視41行的 initialize() 方法的實現。

41G -> 2w -> ⌘+⌥+B

VIM 編輯命令

選中命令

  • v:視覺化模式,通過 移動命令,選中相應的內容。

插入命令

  • i & Ii在游標字元前插入,I在行首插入。
  • a & Aa在游標字元後新增,A在行尾新增。

刪除命令

  • d+motion :刪除指令

常用操作:

  • v 選中後刪除d
  • dd:刪除當前行,並把刪除的行存到剪貼簿裡
  • db/w:刪除上/下一個單詞

操作演示:

v -> d -> dd -> db -> dw -> dd

修改命令

  • c [number] motion:更改類操作符的工作方式跟刪除類是一致。

常用指令: cw 修改當前整個單詞,刪除當前單詞後,編輯正確內容

  • 除了上一節所說的cw,我也可以鍵入c$,用來修改當前字元到行末的所有內容

撤銷命令

  • u 撤銷最近的一個修改動作;

  • U 撤銷當前行上的所有修改。

  • ctrl + R重放命令- 回退撤銷操作

複製貼上命令

  • y [number] motion : 複製命令,常用的有 yy 複製一行,yw 複製下一個單詞,y$ 複製到行尾。
  • [number] p : 貼上複製內容 , 可貼上多次 5p

VIM 命令模式

在普通模式下,輸入:即可進入

  • s/executor/asyncExecutor/g :替換當前行所有 executorasyncExecutor
  • :g/^\s*$/d: 刪除空行以及只有空格的行
  • %s/#.*//g: 刪除#之後的字元

巨集錄製

  • qa 把你的操作記錄在暫存器 a。
  • 於是 @a 會replay被錄製的巨集。
  • @@ 是一個快捷鍵用來replay最新錄製的巨集。

示例

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

  • qaYp<C-a>q

    • qa 開始錄製
    • Yp 複製行.
    • <C-a> 增加1.
    • q 停止錄製.
  • @a → 在1下面寫下 2

  • @@ → 在2 正面寫下3

  • 現在做 100@@ 會建立新的100行,並把資料增加到 103.

點關注,不迷路

本文帶大家手把手學習了一波 VIM 的入門教學,通過結合 IDEA,來讓我們在開發過程中,不斷熟悉 VIM的語發,拒絕 Ctrl + C/V 工程師,由現在做起~

好了各位,以上就是這篇文章的全部內容了,我後面會每週都更新幾篇高質量的大廠面試和常用技術棧相關的文章。感謝大夥能看到這裡,如果這個文章寫得還不錯, 求三連!!! 感謝各位的支援和認可,我們下篇文章見!

我是 九靈 ,有需要交流的童鞋可以關注公眾號:Java 補習課! 如果本篇部落格有任何錯誤,請批評指教,不勝感激 !