摘要:之所以能卓爾不群靠地就是一種自成一派且精悍有效的編輯器哲學(xué)當(dāng)然也是,就好像網(wǎng)游千千萬(wàn)卻唯有一覽眾山小,那靠地不是技巧與外在,而是與眾不同的世界觀。征服其實(shí)是一種領(lǐng)悟,我融入了的哲學(xué)而已。這也是好東西,它比上一個(gè)更貼近的哲學(xué)。
就在幾個(gè)小時(shí)以前,我回答了一個(gè)關(guān)于推薦開(kāi)發(fā)工具的問(wèn)題,很多朋友表示喜歡和鼓勵(lì),非常感謝!我也很想多寫(xiě)一些細(xì)節(jié),于是便起意開(kāi)一個(gè)系列來(lái)聊聊我多次提到的 Vim。
這將是一個(gè) Vim 的教學(xué)性質(zhì)的系列,但是和絕大多數(shù)同類(lèi)教程不同的是,我的重點(diǎn)不在于技巧的傳授,而是在于對(duì)其觀念的理解和闡述。Vim 之所以能卓爾不群靠地就是一種自成一派且精悍有效的“編輯器哲學(xué)”(當(dāng)然 Emacs 也是),就好像網(wǎng)游千千萬(wàn)卻唯有 World of Warcraft 一覽眾山小,那靠地不是技巧與外在,而是與眾不同的世界觀。這個(gè)世界和這個(gè)時(shí)代,很多東西都能博人眼球,令人叫絕,但唯有那些體現(xiàn)出獨(dú)特價(jià)值觀的人或事物才能在人們心里留下難以磨滅的印記。
如何學(xué)習(xí) Vim?我首先來(lái)講講宏觀上的心得體會(huì):如何學(xué)習(xí) Vim?這個(gè)問(wèn)題的背后其實(shí)隱含著很多訴求,比如:
我很懶,不想看厚厚的文檔,不想學(xué)習(xí)無(wú)窮無(wú)盡的命令、腳本、配置選項(xiàng)……我就想要能夠快速上手,在最短時(shí)間里成為高手。
我很笨,我根本記不住那么多的模式和命令組合,我也永遠(yuǎn)無(wú)法適應(yīng)古怪的功能鍵位,我只想“所見(jiàn)即所得”,點(diǎn)點(diǎn)鼠標(biāo)就可以完成所有的操作。
我很煩,我要這要那,我要 debugger,我要 refactor,我要 auto-complete……一句話,我要 Out of box!(開(kāi)箱即用,應(yīng)有盡有)但是,誰(shuí)能告訴我怎么自定義代碼匹配的片斷啊?誰(shuí)能告訴我怎么定義語(yǔ)法檢查的范圍啊?誰(shuí)能告訴我怎么換字體和顏色主題啊?
……等等
我理解,我都能理解。現(xiàn)在我不會(huì)批判,未來(lái)我會(huì)逐一解答,請(qǐng)稍安勿躁。其實(shí)在我身上發(fā)生的故事就很有代表性,從我接觸 Vim 到現(xiàn)在足足超過(guò)兩年時(shí)間,在此期間我無(wú)數(shù)次鼓起勇氣想要征服這個(gè)巨獸,卻也同樣多次的短短幾天就敗下陣來(lái)(令人欣慰的是這些打擊倒是讓我重新認(rèn)識(shí)了許多別的編輯器);也試圖偷懶直接使用其他人的 .vimrc 或者集成安裝包,但每次都是好景不長(zhǎng),一旦遇到想要微調(diào)的時(shí)候就抓狂不已了……
說(shuō)真的我不止一次想過(guò),或許我一輩子都沒(méi)法真正學(xué)會(huì) Vim,但是內(nèi)心坦白地說(shuō):我對(duì)自己很失望。
我不想把這篇文字變水,所以?xún)?nèi)心獨(dú)白就省略了。真正的關(guān)鍵在于一年半以后,也就是距今半年以前,一個(gè)人改變了我對(duì)于學(xué)習(xí) Vim 這件事情的態(tài)度,或者說(shuō)他刺激了我讓我有了新的動(dòng)力和方法,我為自己制定了計(jì)劃并依次施行,終于成功地征服了它。
征服,不是指我無(wú)敵了,而是說(shuō)我對(duì)這個(gè)工具已經(jīng)沒(méi)有任何使用障礙了,即使我還有很多不了解的東西,我也知道如何去應(yīng)對(duì)和掌握它們,剩下的只是時(shí)間問(wèn)題。征服其實(shí)是一種領(lǐng)悟,我融入了 Vim 的哲學(xué)而已。
我之所以要說(shuō)這些就是想告訴你們,學(xué)習(xí) Vim 并不困難,不需要你多么天才,也不需要你多么努力。你只需要一個(gè)想要用它的意愿和一條忠懇的建議——也就是那個(gè)人教會(huì)我的:保持簡(jiǎn)單(Keep it simple enough)。
這就是全部的秘訣。唯一阻礙你學(xué)會(huì) Vim 的原因就是你總是把它想的太復(fù)雜,所以從一開(kāi)始請(qǐng)放輕松,接下來(lái)我會(huì)與你分享幾乎所有的細(xì)節(jié),你一定不會(huì)讓自己感到失望的!
另外,為了客觀證明我不是吹牛逼(比如抄別人的教學(xué)帖子來(lái)博名望),也為了給你樹(shù)立一點(diǎn)信心(我的確知道如何學(xué)好 Vim),貼上我剛完成的 Smaterer 測(cè)驗(yàn)分?jǐn)?shù):
其實(shí)這個(gè)測(cè)試不算最難的,滿分 800,很遺憾我就差一步到 Master 級(jí)別,不過(guò)我已經(jīng)很高興了。半年而已,我沒(méi)有白費(fèi)功夫(而且不是天天像讀書(shū)考試那樣的學(xué),很輕松很愉悅),我相信你一定可以學(xué)得更快更好。
第一關(guān):基本移動(dòng)如果有些事是不得不去忍受的,那就去尋找享受它的辦法。
我這人不算聰明,但貴在有自知之明,有一套非常適合自己的學(xué)習(xí)方法,所以只要是我想學(xué)的就沒(méi)有學(xué)不會(huì)的(但不會(huì)像天才那樣迅速)。經(jīng)過(guò)長(zhǎng)達(dá)一年半挫折體驗(yàn)的磨礪,我開(kāi)始修正自己的學(xué)習(xí)方式,以下是第一階段的總結(jié)。
有些東西是基礎(chǔ)中的基礎(chǔ),永遠(yuǎn)也擺脫不了,Vim 也不外如此。我們無(wú)法逃避這個(gè)過(guò)程,但卻可以選擇接受它的方式。
Vim 的基本移動(dòng)就是 h j k l 這四個(gè)鍵,分別代表 左 下 上 右。很特別是嗎?好吧,我承認(rèn)是很古怪。然而你必須要習(xí)慣它們,并且永遠(yuǎn)不要更改它們的鍵位!因?yàn)檫@是 Vim 的哲學(xué):
這些鍵位的存在固然有其歷史原因,但更重要的是以下兩點(diǎn):
1. 擺脫對(duì)視覺(jué)控制的依賴(lài)。也就是擺脫使用鼠標(biāo)等可視化輔助工具來(lái)進(jìn)行光標(biāo)定位的習(xí)慣。人的大腦是很有趣的,邏輯思維和形象思維分別由左右腦來(lái)控制,對(duì)于常寫(xiě)代碼的人來(lái)說(shuō),保持邏輯思考的專(zhuān)注性非常重要,而不停的使用鼠標(biāo)指針在屏幕上找來(lái)找去無(wú)疑會(huì)降低這方面的效率。
2. 這四個(gè)鍵在右手標(biāo)準(zhǔn)鍵位附近,對(duì)于移動(dòng)手指產(chǎn)生的消耗最少。
你應(yīng)該領(lǐng)會(huì)這個(gè)意圖:保持簡(jiǎn)單。
可是真正的問(wèn)題在于習(xí)慣真的很難改變,這種移動(dòng)方式難倒了不少初學(xué)者,所以我選擇了一些更有趣味的方式。我認(rèn)為這種改變實(shí)際上是在鍛煉我們接受新的交互方式,而學(xué)習(xí)交互的最理想方式無(wú)疑是寓教于樂(lè),也就是玩游戲。就連設(shè)計(jì)軟件應(yīng)用也是一樣的道理,如果你的應(yīng)用里與一些非常規(guī)的或者復(fù)雜的操作,你總會(huì)設(shè)計(jì)一些互動(dòng)性很強(qiáng),很友好的引導(dǎo)教學(xué)。Github 為了推廣 Git 是怎么做的?他們聯(lián)合 Code School 錄了兩套非常棒的視頻,其中還包含在線的模擬終端操作!
而對(duì)于 Vim,我給你四條建議:
Vim Adventures 這是一款在線游戲,玩法超級(jí)簡(jiǎn)單,控制鍵都是 Vim 的移動(dòng)指令。你所要做的就是把鍵盤(pán)當(dāng)成手柄,移動(dòng)一個(gè)陰影來(lái)尋找字母、人物、寶藏、鑰匙等等。如果你無(wú)法過(guò)關(guān)也沒(méi)有關(guān)系,重要的是控制方向這個(gè)環(huán)節(jié)能夠把它練習(xí)到無(wú)需思考且不會(huì)犯錯(cuò)就可以了。
Vim Snake 如果你覺(jué)得上一個(gè)游戲有點(diǎn)難,因?yàn)闊o(wú)法過(guò)關(guān)讓你有挫折感的話,這個(gè)游戲就簡(jiǎn)單多了——貪吃蛇,誰(shuí)不會(huì)玩?只不過(guò)你只能用 h j k l 來(lái)控制方向而已。注意,只有在插入模式(i)才能吃到東西,只有在常規(guī)模式(ESC)才能移動(dòng)方向。完整的流程如下:移動(dòng) -> 對(duì)準(zhǔn)目標(biāo) -> 按下 i 直到吃到目標(biāo) -> 迅速按下 ESC -> 移動(dòng)。關(guān)于模式,我們下次解釋。
Open Vim Tutorials 如果以上兩款游戲都讓你為難的話(喂,你不是吧?!),那么這就是你的救星啦。請(qǐng)直接跳到第三章練習(xí)四方向移動(dòng),等到開(kāi)始習(xí)慣這種感覺(jué)了再繼續(xù)挑戰(zhàn)游戲。
Vim Genius 這也是好東西,它比上一個(gè)更貼近 Vim 的哲學(xué)。它不讓你看到要按哪個(gè)鍵,而是給你文字提示讓你盲打?qū)?yīng)的鍵,其好處是鍛煉自己的肌肉記憶和條件反射思維。然而它比較依靠你的自控能力與耐心,另外英文不好也會(huì)有點(diǎn)拖累。
實(shí)際上,以上四款推薦都不是單純的上下左右練習(xí),哪怕是操控最簡(jiǎn)單的也會(huì)有其他鍵位的練習(xí)混雜其中。但是這個(gè)階段的目標(biāo)只是征服上下左右而已,我的建議是保持注意力在這個(gè)目標(biāo)上,保持簡(jiǎn)單。
我在這些游戲和互動(dòng)式教程身上花費(fèi)了一個(gè)多月的時(shí)間,每天平均在 20 分鐘左右(也就是 10 個(gè)小時(shí)),我說(shuō)過(guò)我不算聰明人吧?當(dāng)然我也沒(méi)有那么笨啦,主要還是因?yàn)槲艺娴南矚g玩游戲,喜歡挑戰(zhàn)自己的極限。不過(guò)我真正想說(shuō)的是,不要著急!沒(méi)有人期待你三天拿下 Vim,你著急給誰(shuí)看呀!我建議你學(xué) Vim 不代表我認(rèn)為其他編輯器/IDE 就是一坨屎,你可以繼續(xù)使用別的工具來(lái)保持工作和學(xué)習(xí)的效率,只是 Vim 是值得一學(xué)的,而且是有點(diǎn)難度的東西,你能夠保持抽點(diǎn)時(shí)間來(lái)練習(xí)一下就很不錯(cuò)了。
在下一階段我還會(huì)繼續(xù)解釋為什么要保持簡(jiǎn)單,繼續(xù)分享我對(duì) Vim 哲學(xué)的感受,另外我們還將了解到非常重要的——模式(Modes)。記住,保持簡(jiǎn)單,保持期待。
尾記:上文中提到了“一個(gè)人”,那個(gè)改變了我對(duì) Vim 認(rèn)識(shí)的人,他叫 Gary Bernhardt,他曾經(jīng)錄制了一套非常棒的教學(xué)視頻系列,不過(guò)不是專(zhuān)門(mén)針對(duì) Vim 的,主要話題涉及重構(gòu)、程序設(shè)計(jì)、測(cè)試驅(qū)動(dòng)開(kāi)發(fā)、工具使用技巧等等,涉及到的語(yǔ)言主要是 Ruby Python 和 Shell Script。曾經(jīng)這些視頻很便宜,9美刀/月,我有幸在那時(shí)全部獲得(總共就花了這么多,趕上恰當(dāng)?shù)臅r(shí)間,一個(gè)月內(nèi)全部下完了)。遺憾的是他現(xiàn)在的注意力放在了別的事情上,已經(jīng)不再錄制視頻了(Twitter 上好多人強(qiáng)烈呼吁他繼續(xù),結(jié)果他連 Twitter 都不玩了——當(dāng)然,不是因?yàn)檫@個(gè)原因),而過(guò)往的視頻都打包分成四部分多帶帶出售,總售價(jià)不菲。然而,如果你不差錢(qián)的話,我依然建議你買(mǎi)來(lái)看一看,不單單是因?yàn)?Vim!事實(shí)上在那些視頻里他專(zhuān)門(mén)講解 Vim 的時(shí)間非常少,但是所有的操作都是在 Vim 里即時(shí)完成的,如果你看了就會(huì)知道那是一種什么感覺(jué),什么叫做如臂使指,什么叫做隨心所欲。雖然他肯定不是獨(dú)一無(wú)二的高手,也不一定是最強(qiáng)悍的一個(gè),但是我希望我能達(dá)到這個(gè)水平就非常非常滿足了。你看,這個(gè)世界上總有一些人一些事會(huì)在不經(jīng)意之間改變你的觀念,在一個(gè)采訪他的視頻里有人問(wèn)道:你是如何把 Vim 用的如此好的?他回答:保持簡(jiǎn)單。我的理解是,高手口中的保持簡(jiǎn)單,背后蘊(yùn)含著無(wú)數(shù)的探索和嘗試,然而這不是困難,真正的困難是你無(wú)法理解和保持這種簡(jiǎn)單的目標(biāo)。當(dāng)你費(fèi)盡心思想要打造最強(qiáng)編輯器,結(jié)果還是不能達(dá)到你的理想狀態(tài)然后不得不放棄的時(shí)候,你已經(jīng)背離了 Vim 的哲學(xué)。這個(gè)系列,雖然講的是 Vim,但我希望能夠表述出我的感悟,并且讓讀者能感受到我當(dāng)初的感受,而我相信所謂“Vim的哲學(xué)”也一定能夠幫助你在其他任何領(lǐng)域找到共通之處,這才是學(xué)習(xí) Vim 的最終價(jià)值和意義吧!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/24765.html
摘要:本文將以此為起點(diǎn),介紹一些替換小技巧。實(shí)話實(shí)說(shuō),使用命令來(lái)替換有違于大多數(shù)程序員的習(xí)慣。接下更進(jìn)一步,教多幾個(gè)小技巧。這么一來(lái),替換將僅在當(dāng)前大括號(hào)內(nèi)生效。在替換局部變量時(shí),比起全局替換,這樣的替換方式無(wú)疑會(huì)更高效。 想必用過(guò)Vim的人都知道,在Vim里面,以下命令可以替換當(dāng)前文件的內(nèi)容: :[range]s/{要被替換的模式}/{替換的內(nèi)容}/[flags] 其中range指定替換命...
摘要:為什么要有模式呢以上其實(shí)已經(jīng)講述了一些原因,但真正的價(jià)值還在于接下來(lái)要講到的哲學(xué)。鼠標(biāo)與快捷鍵的操作治標(biāo)不治本,它們沒(méi)能從根本上解決這個(gè)問(wèn)題。 學(xué)會(huì)用不同的角度去看待和理解這個(gè)世界,你收獲的永遠(yuǎn)會(huì)比你想象的更多。 上回我分享了如何掌握基礎(chǔ)移動(dòng)的心得體會(huì),而對(duì)于很重要的模式卻只是一帶而過(guò),這其實(shí)是有原因的。過(guò)去我有過(guò)幾次教新手 Vim 的經(jīng)歷,按照慣常的方式先告訴他們模式切換,...
摘要:的哲學(xué)第四篇姍姍來(lái)遲,狗血的原因我就不多說(shuō)了,好消息是我將為這個(gè)系列帶來(lái)一些動(dòng)態(tài)演示。所以目前為止你學(xué)會(huì)上述四個(gè)動(dòng)作指令就足夠了。以詞為單位使得我們可以更精確也是更具語(yǔ)義化的移動(dòng)光標(biāo),并且要比逐個(gè)字符的移動(dòng)要快得多。 Vim 的哲學(xué)第四篇姍姍來(lái)遲,狗血的原因我就不多說(shuō)了,好消息是我將為這個(gè)系列帶來(lái)一些動(dòng)態(tài)演示。原本我打算錄視頻的,但是文章都寫(xiě)了那么些篇了,現(xiàn)在再錄視頻似乎晚了些,所以我...
摘要:原文鏈接適合自己的,才是最好的被稱(chēng)為編輯器之神,是我用過(guò)之后才體會(huì)到的,用之前實(shí)在不敢對(duì)它做出什么評(píng)價(jià)。最初的不適,換來(lái)的是效率的飛升。感悟在學(xué)習(xí)使用的過(guò)程中,我最大的感悟就是適合自己的,才是最好的。 原文鏈接:Vim - 適合自己的,才是最好的 Vim 被稱(chēng)為編輯器之神,是我用過(guò)之后才體會(huì)到的,用之前實(shí)在不敢對(duì)它做出什么評(píng)價(jià)。在大學(xué)時(shí)代,Vim 的大名就已如雷貫耳,但由于它陡峭的學(xué)...
摘要:插件鍵位映射技巧性的配置等等都是錦上添花,它們有助于你進(jìn)一步提高效率以及個(gè)性化你的工作環(huán)境,但是對(duì)于哲學(xué)的理解幫助甚少。為你開(kāi)啟語(yǔ)法高亮。你可以自定義各種語(yǔ)言的語(yǔ)法高亮,無(wú)非就是根據(jù)這些規(guī) 如果沒(méi)有挑戰(zhàn),人生將多么無(wú)趣! 兩種副本 在我的硬盤(pán)上總是保留著(至少)兩份 Vim 的配置文件。其中一份是所謂完全正式版,它的文件名是 .vimrc,到本系列結(jié)束的時(shí)候,我們將了解其中...
閱讀 2331·2021-10-08 10:04
閱讀 1105·2021-09-03 10:40
閱讀 1158·2019-08-30 15:53
閱讀 3314·2019-08-30 13:13
閱讀 2932·2019-08-30 12:55
閱讀 2286·2019-08-29 13:21
閱讀 1354·2019-08-26 12:12
閱讀 2760·2019-08-26 10:37