自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用聰明的方式學(xué)習(xí)Vim | GitHub 2200星

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

本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

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

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

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

用聰明的方式學(xué)習(xí)Vim | GitHub 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)在有一段「亂七八糟」的文字,如下所示:

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

現(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)操作。

用聰明的方式學(xué)習(xí)Vim | GitHub 2200星

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

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

傳送門:

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

 

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2020-09-07 15:46:48

GitHubVim開發(fā)

2021-02-20 12:13:23

GitHub代碼開發(fā)者

2016-05-05 11:18:33

華為

2022-08-09 08:18:19

RocketMQpush消費(fèi)

2019-04-22 09:52:34

GitHub代碼機(jī)器學(xué)習(xí)

2020-03-03 15:41:50

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2021-10-17 23:53:17

內(nèi)存管理方式

2011-07-25 15:42:38

Xcode Vim

2020-11-26 15:48:37

代碼開發(fā)GitHub

2011-07-20 12:32:40

2019-08-12 08:43:53

GitHub代碼開發(fā)者

2020-09-29 17:00:33

人工智能

2020-12-10 10:24:25

AI 數(shù)據(jù)人工智能

2020-05-19 14:27:10

GitHubPythonAI算法

2024-11-18 10:25:00

AI模型

2021-02-22 11:00:39

機(jī)器學(xué)習(xí)人工智能AI

2010-10-08 15:44:17

vim

2023-03-30 11:50:34

2020-03-13 10:18:43

GitHub 技術(shù)開源

2021-04-09 16:25:00

GitHub代碼開發(fā)者
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)