來自:隨手記技術團隊(微訊號:sui-tech)
背景
雖然筆者是Android開發工程師,但也接觸過各種IDE(不限於Android開發)。不同的IDE往往都有不同的快捷鍵,我們總不能對每種IDE都進行配置吧。實際上,現在大部分IDE都能透過外掛的形式支援Vim了。所以,只需要掌握Vim的基本使用,在支援Vim的IDE都能很快上手,熟悉的操作,熟悉的手感。
Vim樣式
Vim可分為3種樣式,分別是Normal樣式、Visual樣式和Insert樣式。以下的基本操作都是在Normal樣式進行。三種樣式的區別這裡不詳解了,Bing搜尋有很多相關的基礎教程。
三者的關係可用下圖簡單描述
基本操作
游標移動
註意區分字母大小寫
上下左右
直接看錶格,簡單易懂。一開始會有點彆扭,但是熟悉之後你會愛上他的。
k(上) | ||
---|---|---|
h (左) | l (右) | |
j (下) |
單詞間定位
鍵位
如果是大寫,則單詞允許包含標點
w(向前跳到單詞詞首)
e(向前跳到單詞詞尾)
b(向後跳到單詞詞首)
行內定位
鍵位
$(定位到行尾)
0(定位到行首)
^(定位到行首,忽略空格)
f正向搜尋ch字元,ch如果是字母則區分大小寫
F反向搜尋ch字元,ch如果是字母則區分大小寫
塊定位
鍵位
{(跳到上一個程式碼塊)
}(跳到下一個程式碼塊)
%(定位到另一個匹配的括號)
頁面定位
鍵位
gg(定位到頁面的第一行)
G(定位到頁面的最後一行)
H(定位到當前頁面的頂部,High首字母大寫)
M(定位到當前頁面的中部,Middle首字母大寫)
L(定位到當前頁面的底部,Low首字母大寫)nG或ngg(定位到指定行,n表示行數,需大於0,
如果大於最大行數,則會直接跳轉到頁面最後一行)m和’(這是一對很強大的命令,可標記一個位置,然後在同頁面快速定位到該標誌。m表示mark,a是一個字母,可以是26字母的其中一個,’是單引號,後面跟上前面標記的字母)
螢幕滾動
整屏滾動
鍵位
Ctrl + f (向下滾動一屏內容,Foward首字母小寫)
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),也能實現類似的效果。
神奇操作
IDE支援跳轉到變數(方法)的定義處或者呼叫處,Vim也支援,而且也很方便。只需要將游標定位到方法名,然後輸入gd
即可。配合Android Studio的Navigate Back,可以十分方便地檢視方法的呼叫。
Navigate Back設定
碎語
當掌握了Vim,以後如果使用了新的IDE或者開發環境,只要支援Vim,我們就能很快的熟悉開發環境。當然,很多IDE提供了更完善的快捷鍵,筆者的觀點是,Vim和IDE配合著使用,互補缺點。
參考連結
-
https://jasonliao.me/posts/2016-08-09-you-dont-know-vim.html
-
https://vim.rtorr.com/lang/zh_cn/
●本文編號408,以後想閱讀這篇文章直接輸入408即可
●輸入m獲取到文章目錄
C/C++程式設計
更多推薦《18個技術類公眾微信》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。