2019-05-06每周學(xué)習(xí)筆記

vim 學(xué)習(xí)

近期開(kāi)始頻繁使用 Linux 操作系統(tǒng)扔水,學(xué)會(huì)在 shell 上使用命令行進(jìn)行操作菇夸,并使用 vi 或 vim 進(jìn)行文件編輯也成為了一項(xiàng)必不可少的需要學(xué)習(xí)和精進(jìn)的技能该抒。Vim 的學(xué)習(xí)曲線非常陡峭,一開(kāi)始學(xué)習(xí)時(shí)候會(huì)非常痛苦拍棕,需要花很多時(shí)間宇葱,有點(diǎn)像學(xué)習(xí)一個(gè)樂(lè)器演奏,通常需要近 2 周時(shí)間進(jìn)行學(xué)習(xí)往史。但這不正是一個(gè)十分拿來(lái)進(jìn)行技能的刻意練習(xí)的良好素材嘛仗颈,尤其是一旦學(xué)會(huì)將會(huì)受益匪淺的一項(xiàng)技能,那就抓緊時(shí)間學(xué)習(xí)起來(lái)吧椎例。

第一級(jí). 存活技能

基本技能包括:

  • i 插入模式挨决,輸入 ESC 返回普通模式
  • x 刪除當(dāng)前光標(biāo)下的字符
  • :wq 保存與退出(:w 保存 :q 退出)
  • dd 刪除(和復(fù)制)當(dāng)前行
  • p 粘貼

推薦:
hjkl (強(qiáng)烈推薦但并非強(qiáng)制) 基本的光標(biāo)移動(dòng)命令:j 恰好好像一個(gè)向下??的箭頭
:help <command> 顯示關(guān)于 <command> 的幫助說(shuō)明,可以使用 :help 來(lái)獲得整體的幫助

總共 5 個(gè)命令订歪,這些是你一開(kāi)始需要學(xué)習(xí)掌握并刻意訓(xùn)練到成為一種下意識(shí)狀態(tài)的命令脖祈,主動(dòng)去練,練出肌肉記憶就可以開(kāi)始進(jìn)階第二級(jí)了刷晋。

第二級(jí):感覺(jué)舒適

上面的幾個(gè)命令只是讓你能存活下來(lái)撒犀,接下來(lái)是時(shí)候?qū)W習(xí)一些更多的命令了福压,以下是我的建議:所有命令都需要在普通模式下使用掏秩,如果你不知道現(xiàn)在是什么模式或舞,請(qǐng)狂按幾次 ESC 鍵。

各種插入模式

> a -> 在光標(biāo)后插入
> o -> 在當(dāng)前行后插入一個(gè)新行
> O -> 在當(dāng)前行前插入一個(gè)新行
> cw -> 替換從光標(biāo)所在位置后到一個(gè)單詞結(jié)尾的字符

簡(jiǎn)單的移動(dòng)光標(biāo)

> 0 -> 數(shù)字零蒙幻,到行頭
> ^ -> 到本行第一個(gè)不是 blank 字符的位置 (包括空格映凳、tab、換行邮破、回車等)
> $ -> 到本行行尾
> g_ -> 到本行最后一個(gè)不是 blank 字符的位置
> /pattern -> 搜索 pattern 的字符串(如有多個(gè)诈豌,可按 n 到下一個(gè))

復(fù)制/粘貼

> P -> 粘貼在光標(biāo)前,p 是粘貼在光標(biāo)后
> yy -> 復(fù)制當(dāng)前行抒和,與 ddP 等價(jià)但更簡(jiǎn)單

撤銷/重做

> u -> 撤銷上一次操作
> <C-r> -> 重做

加載/保存/退出/修改文件(Buffer)

> :e -> 打開(kāi)文件
> :w -> 保存文件
> :saveas <path/to/file> -> 保存文件到<path/to/file>
> :x , ZZ 或者 :wq -> 保存并退出 (:x 只在必要時(shí)保存)
> :bn 或 :bp -> 顯示下一個(gè)或上一個(gè)文件

花些時(shí)間來(lái)學(xué)習(xí)這些命令矫渔,一旦你學(xué)會(huì),你基本上可以做任何在其它編輯器上要做的事情摧莽。你可能仍然感到有些笨拙庙洼,但接下來(lái)的幾個(gè)等級(jí)將讓你明白為什么 vim 值得花這些時(shí)間來(lái)學(xué)習(xí)。

第三級(jí):更好镊辕、更強(qiáng)油够、更快

恭喜你來(lái)到了這一步!接下來(lái)我們將開(kāi)始一些有趣的工作征懈,在第三級(jí)石咬,我們將只談?wù)撃切└f的 vi 編輯器兼容的命令。

更好

vim 會(huì)這樣重復(fù)你的動(dòng)作:

  1. . -> (dot)將會(huì)重復(fù)上一個(gè)命令卖哎。
  2. N<command> -> 將重復(fù)命令 N 次鬼悠。
    例如:
  • 2dd -> 刪除兩行
  • 3p -> 粘貼文檔 3 次
  • 100idesu [ESC] -> 在文檔中寫入“desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu”
  • . -> 重復(fù)上一個(gè)命令,再一次寫 100 個(gè) “desu”
  • 3. -> 重復(fù)寫 3 次 “desu” (而不是 300 次亏娜,vim 真聰明)

更強(qiáng)

知道如何高效的在 vim 中移動(dòng)是非常重要的焕窝,不要跳過(guò)這一小節(jié)。

  1. NG -> 去到第 N 行
  2. gg -> 1G 的快捷方式 - 去到第一行
  3. G -> 去到最后一行
  4. 單詞移動(dòng):

w -> 去到下一個(gè)單詞的開(kāi)頭
e -> 去到本單詞結(jié)尾
默認(rèn)情況下單詞由字母數(shù)字和下劃線字符組成照藻,如果你認(rèn)為單詞由默認(rèn)方式組成袜啃,則使用小寫 e 和 w ,如果你認(rèn)為單詞是由 空格(blank)分隔幸缕,則你需使用大寫 E 和 W群发。
接下來(lái)談?wù)勛钣行实墓鈽?biāo)移動(dòng):

  • %:去到對(duì)應(yīng)的 (,{,[
  • *# :去到下一個(gè)或前一個(gè)當(dāng)前光標(biāo)所在單詞

相信我,以上三個(gè)命令非常實(shí)用而強(qiáng)大发乔。

更快

一定要記住光標(biāo)的移動(dòng)熟妓,因?yàn)榻^大部分的命令都可以以下面的方式來(lái)使用:
<start position><command><end position>
例如:0y$ 的意思是:

  • 0 -> 去到本行起始位置
  • y -> 從這里開(kāi)始復(fù)制
  • $ -> 到本行末尾

同樣可以使用 ye 實(shí)現(xiàn)從當(dāng)前光標(biāo)到本單詞結(jié)尾的復(fù)制。你也可以輸入 y2/foo 來(lái)復(fù)制 2 個(gè) “foo” 之間的字符串栏尚。
還有很多時(shí)候并不一定要按 y 才會(huì)復(fù)制起愈,下面的命令也會(huì)復(fù)制:

d (刪除)
v (可視化的選擇)
gU (變大寫)
gu (變小寫)
···

(可視化選擇是一個(gè)很有意思的命令,你可以先按 v ,然后移動(dòng)光標(biāo)抬虽,你就會(huì)看到文本被選擇官觅,然后,你可能 d阐污,也可以 y休涤,也可以變大小寫等)

第四級(jí):Vim 的超級(jí)能量

你只需要掌握前面的命令,就可以很舒服的使用 VIM 了笛辟,但是功氨,現(xiàn)在,我們向你介紹的是 VIM 殺手級(jí)的功能手幢,下面這些功能是我只用 vim 的原因:

在當(dāng)前行上移動(dòng)光標(biāo)

0 -> 到行頭
^ -> 到本行的第一個(gè)字母
$ -> 到最后一列
g_ -> 到本行最后一個(gè)字母
fa -> 到本行下一個(gè) a 出現(xiàn)的地方捷凄,,; 找到下一個(gè)或前一個(gè)
t, -> 去到 , 之前的一個(gè)字符
3fa -> 找到本行第三次出現(xiàn)的 a
F 和 T -> 同 f 與 t 只不過(guò)是相反方向

[圖片上傳失敗...(image-8e529d-1557159121228)]

還有一個(gè)很有用的命令:dt" -> 刪除所有的內(nèi)容,知道遇到雙引號(hào)--"

區(qū)域選擇

在 visual 模式下围来,這些命令很強(qiáng)大跺涤,其命令格式為:<action>a<object><action>i<object>

  • action 可以是任何的命令,如 d(刪除)管钳,y(拷貝)钦铁,v(可視模式選擇)
    object 可能是: w 一個(gè)單詞,W 一個(gè)以空格為分隔的單詞才漆,s 一個(gè)句子牛曹,p 一個(gè)段落。也可以是一個(gè)特別的字符醇滥,如:",',),},].

假設(shè)你有一個(gè)字符串 (map (+)("foo")). 而光標(biāo)鍵在第一個(gè) o 的位置黎比。

vi" -> 會(huì)選擇 foo
va" -> 會(huì)選擇 “foo“
vi) -> 會(huì)選擇 ”foo“
va) -> 會(huì)選擇 ("foo")
v2i) -> 會(huì)選擇 map (+)("foo")
v2a) -> 會(huì)選擇 (map (+)("foo"))
[圖片上傳失敗...(image-60147c-1557159121229)]

塊操作

塊操作,典型的操作:0 < C-v> < C-d> I-- [ESC]

^ -> 到行頭
< C-v> -> 開(kāi)始?jí)K操作
< C-d> -> 向下移動(dòng) > (你也可以使用hjkl來(lái)移動(dòng)光標(biāo)鸳玩,或是使用 %阅虫,或是別的)
I-- [ESC] -> I 是插入,插入“--”不跟,按 ESC 鍵來(lái)為每一行生效颓帝。

在 Windows 下的 vim ,你需要使用<C-q> 而不是 <C-v>

自動(dòng)提示

在 Insert 模式下窝革,你可以輸入一個(gè)詞的開(kāi)頭购城,然后按 <C-p> 或是 <C-n>,自動(dòng)補(bǔ)齊功能就出現(xiàn)了……

宏錄制

qa 把你的操作記錄在寄存器 a
于是 @a 會(huì) replay 被錄制的宏
@@ 是一個(gè)快捷鍵用來(lái) replay 最新錄制的宏

示例
在一個(gè)只有一行且這一行只有“1”的文本中虐译,鍵入如下命令:
qaYp< C-a>q->
:qa 開(kāi)始錄制
:Yp 復(fù)制行
:< C-a> 增加1
:q 停止錄制
@a -> 在 1 下面寫下 2
@@ -> 在 2 下面寫下 3
現(xiàn)在做 100@@ 會(huì)創(chuàng)建新的 100 行瘪板,并把數(shù)據(jù)增加到 103

可視化選擇

前面,我們看到了的示例漆诽,我們可以使用 v 和 V 侮攀,一旦被選好了锣枝,你可以做下面的事情:

J -> 把所有的行連接起來(lái)(變成一行)
< 或 > -> 左右縮進(jìn)
= -> 自動(dòng)給縮進(jìn)

在所有被選擇的行后加上點(diǎn)東西:

<C-v>
選中相關(guān)的行(可使用 j 或 <C-d> 或是 /pattern 或是 % 等……)
$ 到行最后
A 輸入字符串,按 ESC

分屏

下面是主要的命令兰英,你可以使用 VIM 的幫助:help split撇叁。

:split -> 創(chuàng)建分屏(:vsplit創(chuàng)建垂直分屏)
<C-w><dir> : dir 就是方向,可以是 hjkl 或是 箭頭 中的一個(gè)箭昵,其用來(lái)切換分屏
<C-w>_ (or <C-w>l): 最大化尺寸
<C-w>+ (or <C-w>-): 增加尺寸

總結(jié)

以上是作者最常用的 90% 的命令
建議每天都學(xué) 1 到 2 個(gè)新的命令税朴,兩到三周后,你會(huì)感到 vim 的強(qiáng)大的家制,有時(shí)候,學(xué)習(xí) vim 就像是在死背一些東西泡一,幸運(yùn)的事颤殴, vim 有很多很不錯(cuò)的工具和優(yōu)秀的文檔。運(yùn)行 vimtutor 直到你熟悉了那些基本命令鼻忠,其在線幫助文檔中你應(yīng)該要仔細(xì)閱讀的是:help usr_02.txt涵但,你會(huì)學(xué)習(xí)到諸如!
帖蔓,目錄矮瘟,寄存器,插件等很多其它的功能塑娇,學(xué)習(xí) vim 就像學(xué)彈鋼琴一樣澈侠,一旦學(xué)會(huì),受益無(wú)窮埋酬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哨啃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子写妥,更是在濱河造成了極大的恐慌拳球,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件珍特,死亡現(xiàn)場(chǎng)離奇詭異祝峻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)扎筒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門莱找,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人砸琅,你說(shuō)我怎么就攤上這事宋距。” “怎么了症脂?”我有些...
    開(kāi)封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵谚赎,是天一觀的道長(zhǎng)淫僻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)壶唤,這世上最難降的妖魔是什么雳灵? 我笑而不...
    開(kāi)封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮闸盔,結(jié)果婚禮上悯辙,老公的妹妹穿的比我還像新娘。我一直安慰自己迎吵,他們只是感情好躲撰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著击费,像睡著了一般拢蛋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔫巩,一...
    開(kāi)封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天谆棱,我揣著相機(jī)與錄音,去河邊找鬼圆仔。 笑死垃瞧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坪郭。 我是一名探鬼主播个从,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼截粗!你這毒婦竟也來(lái)了信姓?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绸罗,失蹤者是張志新(化名)和其女友劉穎意推,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體珊蟀,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菊值,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了育灸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腻窒。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖磅崭,靈堂內(nèi)的尸體忽然破棺而出儿子,到底是詐尸還是另有隱情,我是刑警寧澤砸喻,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布柔逼,位于F島的核電站蒋譬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏愉适。R本人自食惡果不足惜犯助,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望维咸。 院中可真熱鬧剂买,春花似錦、人聲如沸癌蓖。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)费坊。三九已至倒槐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間附井,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工两残, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留永毅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓人弓,卻偏偏與公主長(zhǎng)得像沼死,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子崔赌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 概念 什么是 vim Vim是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器意蛀。代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富...
    靜默虛空閱讀 634評(píng)論 0 3
  • 轉(zhuǎn)自 http://coolshell.cn/articles/5426.htmlvim的學(xué)習(xí)曲線相當(dāng)?shù)拇螅▍⒖锤?..
    PHPNOTE閱讀 300評(píng)論 0 1
  • 備注:I am a beginner 健芭,本文所有權(quán)益歸以下鏈接原作者所有!!!! 簡(jiǎn)明Vim練級(jí)攻略酷殼—Cool...
    沈祥佑閱讀 362評(píng)論 0 3
  • dpkg 學(xué)習(xí) 安裝mysql apt-get install mysql-server-5.6 apt-get ...
    sharonji閱讀 437評(píng)論 0 0
  • 大年三十,你會(huì)不會(huì)守夜 文/詩(shī)酒年華邢 大年三十不知道別人痒留,反正我肯定會(huì)守夜的谴麦。原因很簡(jiǎn)單,中國(guó)雖有五千年文明伸头,但...
    詩(shī)酒年華邢閱讀 725評(píng)論 1 14