Android 如何用 Vim 提高開發(fā)效率
背景
雖然筆者是Android開發(fā)工程師,但也接觸過各種IDE(不限于Android開發(fā))。不同的IDE往往都有不同的快捷鍵,我們總不能對每種IDE都進行配置吧。實際上,現(xiàn)在大部分IDE都能通過插件的形式支持Vim了。所以,只需要掌握Vim的基本使用,在支持Vim的IDE都能很快上手,熟悉的操作,熟悉的手感。
Vim模式
Vim可分為3種模式,分別是Normal模式、Visual模式和Insert模式。以下的基本操作都是在Normal模式進行。三種模式的區(qū)別這里不詳解了,Bing搜索有很多相關的基礎教程。
三者的關系可用下圖簡單描述
基本操作
光標移動
注意區(qū)分字母大小寫
上下左右
直接看表格,簡單易懂。一開始會有點別扭,但是熟悉之后你會愛上他的。
k(上) | |
---|---|
h (左) | l (右) |
j (下) |
單詞間定位
鍵位
如果是大寫,則單詞允許包含標點
w(向前跳到單詞詞首)
e(向前跳到單詞詞尾)
b(向后跳到單詞詞首)
行內定位
鍵位
$(定位到行尾)
0(定位到行首)
^(定位到行首,忽略空格)
正向搜索ch字符,ch如果是字母則區(qū)分大小寫
F
塊定位
鍵位
{(跳到上一個代碼塊)
}(跳到下一個代碼塊)
%(定位到另一個匹配的括號)
頁面定位
鍵位
gg(定位到頁面的***行) G(定位到頁面的***一行) H(定位到當前頁面的頂部,High首字母大寫) M(定位到當前頁面的中部,Middle首字母大寫) L(定位到當前頁面的底部,Low首字母大寫) nG或ngg(定位到指定行,n表示行數(shù),需大于0, 如果大于***行數(shù),則會直接跳轉到頁面***一行) m和'(這是一對很強大的命令,可標記一個位置,然后在同頁面快速定位到該標志。m表示mark,a是一個字母,可以是26字母的其中一個,'是單引號,后面跟上前面標記的字母)
屏幕滾動
整屏滾動
鍵位
Ctrl + f (向下滾動一屏內容,F(xiàn)oward首字母小寫)
Ctrl + b (向上滾動一屏內容,Backward首字母小寫)
半屏滾動
鍵位
Ctrl + d(向下滾動半屏內容,Down首字母小寫)
Ctrl + u(向上滾動半屏內容,Up首字母小寫)
行滾動
鍵位
Ctrl + e(向下滾動一行內容)
Ctrl + y(向上滾動一行內容)
編輯模式
插入
鍵位
i(在光標處插入,insert首字母小寫)
I(在行首插入,insert首字母大寫)
a(在光標處后一個字符插入,append首字母小寫)
A(在行尾插入,append首字母大寫)
o(在上一行插入)
O(在下一行插入)
cc/S(清除當前行并進入插入模式)
s(清除當前字符并進入插入模式)
恩,這個很簡單,就不貼圖了。
查找
鍵位
/pattern(正向查找)
?pattern(反向查找)
n(查找下一個)
N(查找上一個)
*(當光標定位在某個單詞時,查找下一個該單詞)
#(當光標定位在某個單詞時,查找上一個該單詞)
替換
鍵位
:%s/old/new/g(全局替換old為new)
:s/old/new/g(替換當前行old為new)
注意,替換操作僅在當前頁面生效,使用該替換操作需謹慎。
建議使用IDE自帶的重命名操作,可以將對應的引用也一起重命名!
剪切、復制、粘貼
鍵位
dd(剪切當前行的內容)
D(剪切光標后到行尾的內容)
yy/Y(復制當前行的內容)
p(粘貼到光標后)
P(粘貼到光標前)
撤銷
鍵位
u(撤銷上一步,IDE一般都是Cmd + Z)
這個簡單,也不貼圖了。
組合操作
組合操作可以看作是op+i/a+scope公式的應用,解釋一下這個公式,op就是我們前面提到的插入(c)、剪切(d)、復制(y)以及還未提到的選擇(v),i表示scope范圍內,a表示包含scope標簽,scope就是操作的范圍了。這樣講比較抽象,下面舉例幾個常用組合。
選擇文本
鍵位
以下如果將i換成a,則會將符號也包含進去
vib(選中小括號內的內容)
viB(選中大括號內的內容)
vi"(選中雙引號內的內容)
vi'(選中單引號內的內容)
vi<(選中尖括號內的內容)
同理,將選擇操作(v)替換成插入(c)、剪切(d)或者復制(y),也能實現(xiàn)類似的效果。
神奇操作
IDE支持跳轉到變量(方法)的定義處或者調用處,Vim也支持,而且也很方便。只需要將光標定位到方法名,然后輸入 gd 即可。配合Android Studio的Navigate Back,可以十分方便地查看方法的調用。
Navigate Back設置
碎語
當掌握了Vim,以后如果使用了新的IDE或者開發(fā)環(huán)境,只要支持Vim,我們就能很快的熟悉開發(fā)環(huán)境。當然,很多IDE提供了更完善的快捷鍵,筆者的觀點是,Vim和IDE配合著使用,互補缺點。
參考鏈接
-
https://jasonliao.me/posts/2016-08-09-you-dont-know-vim.html
-
https://vim.rtorr.com/lang/zh_cn/