1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Github火爆的項(xiàng)目,用聰明的方式學(xué)習(xí)Vim!

        共 2591字,需瀏覽 6分鐘

         ·

        2021-04-12 12:33







        真香!24W字的Java面試手冊(cè)(點(diǎn)擊查看)


        本文轉(zhuǎn)自AI新媒體量子位

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

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

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

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

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


        verb + noun


        如果拿英文短句做類(lèi)比,就例如:


        Eat (verb) a donut (noun)

        Kick (verb) a ball (noun)


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

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

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


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


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

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


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


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


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


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


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


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

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

        可組合性和語(yǔ)法

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

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

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


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


        現(xiàn)在需要將這些文字轉(zhuǎn)換成為表格形式,若是用 Vim 命令來(lái)實(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


        回過(guò)頭來(lái)看下剛才的命令。

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

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

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


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


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


        02  Kitten  Ok
        03  Bunny  Ok


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

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

        基于Vim語(yǔ)法的更多操作

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

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

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


        h   Left
        j    Down
        k   Up
        l    Right


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


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


        接下來(lái)是以「行」為單位的移動(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)然,用類(lèi)似的Vim方式,還可以完成「段」級(jí)別、搜索、滾動(dòng)、標(biāo)記等一系列移動(dòng)操作。

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

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

        傳送門(mén):

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


        如有文章對(duì)你有幫助,

        在看”和轉(zhuǎn)發(fā)是對(duì)我最大的支持!



        推薦, Java面試手冊(cè) 
        內(nèi)容包括網(wǎng)絡(luò)協(xié)議、Java基礎(chǔ)、進(jìn)階、字符串、集合、并發(fā)、JVM、數(shù)據(jù)結(jié)構(gòu)、算法、MySQL、Redis、Mongo、Spring、SpringBoot、MyBatis、SpringCloud、Linux以及各種中間件(Dubbo、Nginx、Zookeeper、MQ、Kafka、ElasticSearch)等等...


        點(diǎn)擊文末“閱讀原文”可直達(dá)

        瀏覽 68
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            污在线观看网站 | AAA级成人毛片免费视频 | 国产精品久久久久久久久久乐趣播 | japonensis少妇最高潮 | 女人被男人猛c高潮呻吟喷水 | 精品国产探花在线观看 | A视频免费观看 | 看男人操女人逼 | 女性洗澡bbw | 大尺度人体私拍裸体偷拍 |