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