高效編程:在 IntelliJ IDEA 中使用 VIM
概述
Vim
是一個功能強大
、高度可定製
的文本編輯器; 具體有多強大,我現在還沒體會到(orz
)。在日新月異的互聯網時代中,vim
可以算是一個歷史悠久的產物,從誕生到現在都沒有別的編輯器能替代(感興趣可瞭解一下 Emacs
)。目前主流的VSCode
、Intellij 全家桶
和Chrome
等,都支持 / 提供了 vim plugin
。
學習材料
-
Vim 從入門到精通 :
Github
8k 🌟Vim 學習教程
-
簡明 VIM 練級攻略:
陳皓
的VIM
存活攻略 -
遊戲:VIM 大冒險:通過
遊戲
的方式學習VIM
準備工作
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
網絡不好的情況下,可在官網直接下載 Plugin
:https://plugins.jetbrains.com/plugin/164-ideavim
VIM 移動命令
初階移動
h
,j
,k
,l
:左,下,上,右 移動
0
,^
,$
:行首,行首字母,行尾
gg
,G
,50G
:文件頭,文件尾,跳轉到指定行
演示操作:
h
-> j
->k
->l
->0
->^
->$
進階移動
-
w & W
:w
右移一個單詞
(標點分割),W
右移一個字串(空格 / 換行分割) -
b & B
:b
左移一個單詞
(標點分割),B
右移一個字串(空格 / 換行分割) -
{ & }
:移動到段首
,尾
部 ,換行符
分割 -
Ctrl + u/d
:上
/下
翻頁
演示操作:
w
-> b
-> W
-> B
實際開發中移動操作
比如,查看 41 行的 initialize()
方法的實現。
41G
-> 2w
-> ⌘+⌥+B
VIM 編輯命令
選中命令
v
:可視化模式,通過移動命令
, 選中相應的內容。
插入命令
-
i & I
:i
在光標字符前插入,I
在行首插入。 -
a & A
:a
在光標字符後添加,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
:替換當前行所有executor
爲asyncExecutor
-
: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 補習課 獲取更多優質面試資料
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Zsfjjtiqx2MXm80fhxIX3g