摘要:助記符上的所有定義的快捷鍵都是有一定的意義的,在這里我先把常用的一些列出來。我剛開始學的時候,還不知道有那些助記符,基本完全靠死記硬背,我就是用一張紙,然后把命令手寫抄到紙上,放在我的電腦旁,忘了就馬上拿來看看,別說,效果還挺好的。
個人站點:桃園0. 前言 0.1 簡介
vim 被譽為『編輯器之神』,與之同時代的 emacs 被譽為『神之編輯器』。可以看得出 vim 在編輯器的地位是很高的,得益于 vim 的指法,敲起代碼來如行云流水。特別膜拜創(chuàng)始人創(chuàng)始出這么方便的敲代碼的指法,這篇文章就是來帶你入坑 vim 指法操作。
0.2 前端的我為什么要學習 vim在當今前端開發(fā)工具百花齊放的時代(VS Code、Sublime、Atom 以及 IDE Webstorm),我為什么還要介紹 20 多年前開發(fā)的一個老古董呢?在這里我想說的是出身雖然老,但是所帶來的價值并沒有減,一旦習慣了 vim 的指法之后,你會覺得不用 vim 操作寫代碼會覺得很不習慣,甚至不知道怎么操作。然而用在支持 vim 指法的編輯上寫代碼你會覺得如行云流水,如果再配個機械鍵盤,簡直是享受,特別符合極客的風格。
一旦學會了 vim 的指法,會讓你終身受益,至少在你敲代碼的年代會收益,毫無夸張, 它會讓你擺脫煩人的,在敲代碼的時候頻繁的移動鼠標,這也是 vim 的設(shè)計理念之一 -- 脫離鼠標。
0.3 文章適用讀者本篇文章比較適合前端開發(fā)者,因為我也只是用 vim 在前端領(lǐng)域做過一些開發(fā),其他領(lǐng)域我沒有發(fā)言權(quán)。
0.4 Q&AQ:你推薦 vim 是要我們完全放棄以前的編輯器而投入 vim 的懷抱嗎?
A:當然不是。首先 vim 的學習成本還是很高的,因為他跟平時我們用的編輯器敲代碼的方式根本不同,因為它是不用鼠標的,純鍵盤操作。你想想如果你在你的 vs code 上不用鼠標操作,你上下左右全靠方向鍵,那敲代碼的速度得有多慢。而且初學者想把 vim 打造成一個自己的 IDE 還是很有難度的。所以我這里推薦的是,不管是你的 vs code、sublime等,裝一個 vim 插件。我在 vs code 上試過,很爽,只不過現(xiàn)在投身到 emacs 的懷抱了。
雖然我用 emacs 了,我還是會裝 vim 插件(Evil)。如果有興趣,下次可以推薦一下 spacemacs 。
開題說了這么多,就是想吸引一下大家,覺得 vim 的指法是值得去學習的,接下來進入正題。
1 助記符vim 上的所有定義的快捷鍵都是有一定的意義的,在這里我先把常用的一些列出來。
1.1 正則表達式相關(guān)$ : 移動光標到行尾
^ : 移動光標到當前行的第一個字母位置。
1.2 移動類(motion)h(左)、l(右)、j(上)、k(下)、f(front)、b(back)、u(up)
1.3 操作類(operator)d(delete)、i(insert)、a(append)、c(change)、y(copy)、p(paste)
1.4 一般的縮寫w(word)、s(sentence)
2 理解 vim 中三種常用模式vim 里面有好幾種模式,但是因為我這里介紹的是在目前的編輯器里面裝 插件,所以像命令模式這種用來保存文件、退出文件的就不介紹了。
Nomal mode(默認模式,因為使用該模式場景最多,所有定為默認模式)。
Insert mode (插入模式--少用,用了它 vim 就成 「啞巴」了)。
Visual mode(可視模式,取名叫光標模式或者選擇模式可能還比較好理解)
2.1 三種模式之間的轉(zhuǎn)換關(guān)系 3 教程篇當我們記住上面的助記符之后,我們就可以像寫英文短語一樣操作了。
vim 快捷鍵語法:operator[motion],例如 刪兩個單詞就是3.1 移動光標 3.1.1 最基本的 h、j、k、l
d2w,operator 和 motion 我已經(jīng)在前面給出來一些了。
最基本的上下左右移動(跟鍵盤上下左右的鍵盤效果相同,但是往往方向鍵在鍵盤的右下方,離主鍵盤區(qū)較遠,這個也相對比較有優(yōu)勢):
h:光標向左移動
j:光標向下移動
k:光標向上移動
l:光標向右移動
移動屬于 motion,所以在前面加上「count」就可以移動多行了,比如向上移動 10 行,就可以 10k。往往編輯器會有行號,定位需要做個加減法,如果采用的是相對行號,用這個就比較方便。不懂相對行號的同學看下圖就懂了。
w:光標往前移動一個詞
b:光標向后移動一個詞
0:移動光標到當前行首
^:移動光標到當前行的第一個字母位置(注意與 0 的區(qū)別)
$:移動光標到行尾
fx:移動光標到當前行的下一個 x 處(x為任意字母)
tx:和上面一個命令類似,移動到 x 的左邊一個位置
):移動光標到下一個句子
( :移動光標到上一個句子
{:移動光標到上一段
}:移動光標到下一段
在剛才介紹了通過相對行號來進行移動到行的光標,還有采用絕對定位來移動的。那就是 gg。
語法: [num]gg
2gg : 光標移動到第 2 行
gg: 光標移動到文件首部
G:移動到文件胃部
H:移動到屏幕上面
M:移動到屏幕中間
L:移動到屏幕下面
書簽功能:這個功能也是很方便,很少有編輯器有的功能,多帶帶列出來講,強烈推薦。
m
`
Ctrl + b:向上移動一屏(Foward首字母小寫)
Ctrl + f:向下移動一屏(Backward首字母小寫)
Ctrl + d:向下滾動半屏內(nèi)容(Down首字母小寫)
Ctrl + u:向上滾動半屏內(nèi)容(Up首字母小寫)
d[n]w:剪切后面 n 個單詞的內(nèi)容,dw 是剪切當前單詞
[n]dd:剪切n行的內(nèi)容, dd 為剪切當前行
D:剪切光標后到行尾的內(nèi)容
yy/Y:復制當前行的內(nèi)容
p:粘貼到光標后
P:粘貼到光標前
在 normal 模式下是沒有刪除操作的,d 這種刪除也是剪切。
以上全是 normal 模式3.3 編輯模式
在前面也說了,進入編輯模式也就變成了「啞巴」vim 了,就跟一般的編輯器沒什么區(qū)別了。很多人就知道用 i 可以進入,還有很多命令可以讓你聰明的進入。
i:在光標處插入(insert首字母小寫)
I:在行首插入(insert首字母大寫)
a:在光標處后一個字符插入(append首字母小寫)
A:在行尾插入(append首字母大寫)
o:在上一行插入
O:在下一行插入
s:清除當前字符并進入插入模式
cc/S:清除當前行并進入插入模式
cw: 清除當前單詞并進入插入模式
3.4 可視模式要是前面都學會了,可視模式就比較簡單了,而且你將會經(jīng)常用到這個模式。我會把這個模式稱做「選擇模式」,接下來我們就來探索一下是如果選擇的。
其實也就兩個關(guān)鍵的點:v(字符選擇)、V(行選擇)
3.4.1 v(小寫 v)在 normal 模式下,按一下 v,然后可以按 l,重復按 l,你會發(fā)現(xiàn)右邊的在一直被選中(高亮的部分)。同樣的操作,按了 v,然后再練習一下按 h、j、k。
選中的目的是什么呢?就是為了進行一些編輯操作,比如刪除 d (實質(zhì)是剪切)、復制 y。
小提示,常常選中之后用 c 也是比較好的選擇哦,剪切并進入插入模式。3.4.2 V(大寫 V)
V 就是選中行,也很簡單。按了 V 之后,然后按 j、k,就可以上下選擇行了,然后一次性刪除 d、復制 y,就比較方便。
3.5 組合操作這個功能就比較強悍了,很適用,強烈推薦。
先來記公式:operator + i|a + scope
operator 就是我們前面提到的插入(c)、剪切(d)、復制(y)以及選擇(v),i 表示 scope 范圍內(nèi),a 表示包含 scope 標簽,scope 就是操作的范圍了。
實例:
以下如果將 i 換成 a,則會將符號也包含進去
vib(選中小括號內(nèi)的內(nèi)容)
viB(選中大括號內(nèi)的內(nèi)容)
vi"(選中雙引號內(nèi)的內(nèi)容)
vi"(選中單引號內(nèi)的內(nèi)容)
vi<(選中尖括號內(nèi)的內(nèi)容)
u: 撤回上次操作(效果跟 command + z 效果一樣)
/|?xxx:表示在整篇文檔中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.其中xxx可以是正規(guī)表達式。查找到以后, 再輸入 n 查找下一個匹配處, 輸入 N 反方向查找.
:%s/original/replacement:檢索第一個 “original” 字符串并將其替換成 “replacement”
:%s/original/replacement/g: 檢索并將所有的 “original” 替換為 “replacement”
:%s/original/replacement/gc:檢索出所有的 “original” 字符串,但在替換成 “replacement” 前,先詢問是否替換
這些操作一般編輯器都自帶有很好的快捷鍵,記不住也沒啥。
4 結(jié)束語我寫這篇文章的目的不是為了總結(jié)什么知識點(其實當你 vim 用熟了,這些命令完全形成肌肉記憶了,根本不用記下來),或者說想發(fā)篇文章之類的,僅僅是想給 vim 做一個宣傳,讓更多的人接觸 vim,讓更多的開發(fā)者在開發(fā)上效率更高。如果你覺得這篇文章對你有幫助,請轉(zhuǎn)發(fā)給更多的人讓他們都了解了解。
最后想提醒的就是,對于這些快捷鍵,死記是很難記完的,根據(jù)我總結(jié)的一些語義話的方式去記,有公式的記公式,可能要快一點,然后就是多實踐,敲多了自己就記住了。我剛開始學的時候,還不知道有那些助記符,基本完全靠死記硬背,我就是用一張紙,然后把命令手寫抄到紙上,放在我的電腦旁,忘了就馬上拿來看看,別說,效果還挺好的。
祝你們好運!
大家好,我是桃翁,我為自己代言!
個人微信公眾號,以后盡量堅持每周一篇干貨
參考文章:
VIM 百度百科
如何用Vim提高開發(fā)效率
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25006.html
一、請求方式 1. 請求方式有g(shù)et/post/put/delete/options 2. get和post的區(qū)別: get通常用作獲取數(shù)據(jù),post通常用作提交數(shù)據(jù) get參數(shù)有長度限制,受限于URL長度(http協(xié)議對url長度不限制,而是服務(wù)器和瀏覽器的配置參數(shù)限制),post無限制 get冪等,post不冪等(冪等:多次請求,結(jié)果一樣) header里有個參數(shù)content-length...
摘要:而只需要服務(wù)端生成,客戶端保存,每次請求在頭部中使用攜帶,服務(wù)端認證解析就可。如果緩存不清理,驗證碼就會一直有效,不安全。 一、授權(quán) 參考文獻:https://blog.risingstack.com/... 1. Basic authentication (最簡單,適用于沒有第三方的請求接口中) 客戶端發(fā)送authorization,內(nèi)容為 Basic Base64編碼(usern...
摘要:而只需要服務(wù)端生成,客戶端保存,每次請求在頭部中使用攜帶,服務(wù)端認證解析就可。如果緩存不清理,驗證碼就會一直有效,不安全。 一、授權(quán) 參考文獻:https://blog.risingstack.com/... 1. Basic authentication (最簡單,適用于沒有第三方的請求接口中) 客戶端發(fā)送authorization,內(nèi)容為 Basic Base64編碼(usern...
閱讀 3257·2021-11-11 11:00
閱讀 2574·2019-08-29 11:23
閱讀 1457·2019-08-29 10:58
閱讀 2339·2019-08-29 10:58
閱讀 2963·2019-08-23 18:26
閱讀 2520·2019-08-23 18:18
閱讀 2049·2019-08-23 16:53
閱讀 3424·2019-08-23 13:13