日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

用聪明的方式学习Vim,不再死记硬背,复杂命令一学就会

發(fā)布時(shí)間:2023/11/23 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 用聪明的方式学习Vim,不再死记硬背,复杂命令一学就会 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  金磊發(fā)自凹非寺

  量子位報(bào)道公眾號(hào) QbitAI

  Vim 難學(xué)難用?但事實(shí)是,它依舊受許多程序員的歡迎。

  或許,只是你的「打開方式」不對(duì)。

  最近,在 GitHub 上便出現(xiàn)了一個(gè)叫做用聰明的方式學(xué)習(xí) Vim 的項(xiàng)目,上線短短幾天時(shí)間,便已經(jīng)斬獲 2200 星。

  那么,如此學(xué)習(xí) Vim 的方式,到底有多「聰明」?

  用聰明的方式與 Vim「交流」

  很多人可能會(huì)被 Vim 命令的復(fù)雜性嚇到。

  因此,作者將 Vim 命令的一般結(jié)構(gòu),分解成了一個(gè)簡單語法規(guī)則

  這也是本教程中最為重要的一個(gè)章節(jié)——一旦了解了 Vim 命令類似語法的結(jié)構(gòu),就能跟它「暢談無阻」。

  按照作者的說法,「只需要知道一個(gè)語法規(guī)則」,就可以說 Vim 的語言了:

verb + noun

  如果拿英文短句做類比,就例如:

Eat (verb) a donut (noun)

Kick (verb) a ball (noun)

  現(xiàn)在,只需要使用基本的 Vim 動(dòng)詞和名詞來增加詞匯量。

  Vim 的名詞和動(dòng)詞

  這里說到的 Nouns,就是 Vim 中的一些動(dòng)作,例如:

h:左
j:下
k:上
l:右
w:移動(dòng)到下個(gè)詞的開頭
}:跳到下一個(gè)段
$:移動(dòng)到本行末尾

  而 Vim 中的 Verbs,就相當(dāng)于操作符。

  以 h 操作符為例,Vim 中有 16 種,但只需要知道其中 3 種,便可以滿足 80% 的需求。

y:復(fù)制
d:刪除文本,保存到 register
c:刪除文本,保存到 register,并開始「插入」模式

  OK,了解了「名詞」和「動(dòng)詞」,現(xiàn)在便可以應(yīng)用到「語法規(guī)則」中了:

y$:把當(dāng)前所有的東西,從當(dāng)前位置拖拽至行末
dw:從當(dāng)前位置刪除到下一個(gè)單詞的開頭
c}:將當(dāng)前位置更改為此段末尾

  當(dāng)然,類似這樣的組合,也接受數(shù)字作為其中的參數(shù),例如:

y2h:向左拉 2 個(gè)字符
d2w:刪除接下來的 2 個(gè)單詞
c2j:改變接下來的 2 行內(nèi)容

  除此之外,行式操作(linewise operations)是文本編輯中的常見操作,因此,Vim 也允許你通過連續(xù)鍵入 2 次操作符來完成類似這樣的操作。

  比如,鍵入「dd」,刪除整行內(nèi)容;鍵入「cc」,更改整行內(nèi)容。

  可組合性和語法

  在討論 Vim 語法之后,便是 Vim 的可組合性(Composability)。

  可組合性意味著擁有一組通用命令,可以組合起來執(zhí)行更復(fù)雜的命令。當(dāng)與外部程序集成時(shí),Vim 的可組合性的真正威力就顯現(xiàn)出來了。

  舉個(gè)例子,現(xiàn)在有一段「亂七八糟」的文字,如下所示:

IdNameCuteness
01PuppyVery
02KittenOk
03BunnyOk

  現(xiàn)在需要將這些文字轉(zhuǎn)換成為表格形式,若是用 Vim 命令來實(shí)現(xiàn)這點(diǎn)可能會(huì)有一些困難,但是可以使用column terminal命令快速完成。

  將鼠標(biāo)指向「ID」,然后運(yùn)行!}column -t -s “”,就可以得到漂亮的表格了:

Id Name Cuteness
01 Puppy Very
02 Kitten Ok
03 Bunny Ok

  回過頭來看下剛才的命令。

  「!」是過濾操作符,「}」是名詞,過濾操作符接收了另一個(gè)參數(shù),也就是一個(gè)終端命令,「column -t -s “”」。

  簡而言之,經(jīng)過這樣的一番操作后,便完成了文字表格化的任務(wù)。

  再例如,除了表格化之外,再篩選帶有「OK」的行,可以這樣做:

!}column -t -s “” awk ‘NR > 1 && /Ok/ {print $0}’

  得到的結(jié)果便是:

02 Kitten Ok
03 Bunny Ok

  這就是一種與 Vim「交流」的聰明方式。

  但作者也同時(shí)指出,剛開始學(xué)習(xí)、適應(yīng)這種「Vim 語法」是需要一定時(shí)間,但只要熟練起來后,便可輕松駕馭。

  基于 Vim 語法的更多操作

  在介紹完 Vim 的語法規(guī)則后,便可以基于此來完成更多操作和任務(wù)。

  例如在本教程中的第五章,便介紹了「如何在文件中移動(dòng)」。

  剛開始用鍵盤來完成這項(xiàng)任務(wù),肯定是比較慢的,但作者認(rèn)為:

只要你把這個(gè)方法熟悉起來,要比用鼠標(biāo)還要快。

  最基本的操作便是向左、向右、向上和向下移動(dòng)一個(gè)字符:

h Left
j Down
k Up
l Right

  在字符之后,便是以文字為單元的移動(dòng)。

W:移動(dòng)到下一個(gè)單詞的開頭處
E:移動(dòng)到下一個(gè)單詞的結(jié)尾處
B:移動(dòng)到前一個(gè)單詞的開頭處
gE:移動(dòng)到前一個(gè)單詞的結(jié)尾處

  接下來是以「行」為單位的移動(dòng):

0:移動(dòng)到當(dāng)前行的第一個(gè)字符處
^:移動(dòng)到當(dāng)前行第一個(gè)非空字符處
g_:移動(dòng)到當(dāng)前行最后一個(gè)非空字符處
$:移動(dòng)到當(dāng)前行最后一個(gè)字符處
n:移動(dòng)到當(dāng)前行的第n列

  當(dāng)然,用類似的 Vim 方式,還可以完成「段」級(jí)別、搜索、滾動(dòng)、標(biāo)記等一系列移動(dòng)操作。

  此外,教程中還提供了許多其他操作的教程,例如「Insert Mode」、「Undo」等等。

  目前教程還在更新中,有興趣的讀者可以持續(xù)關(guān)注這份「聰明的 Vim 教程」。

  傳送門:

  https://github.com/iggredible/Learn-Vim

總結(jié)

以上是生活随笔為你收集整理的用聪明的方式学习Vim,不再死记硬背,复杂命令一学就会的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。