不可想象!開(kāi)源工具Vim使用者大腦的形態(tài)
原始狀態(tài)
我曾經(jīng)觀(guān)看過(guò)小提琴家非常有激情地拉弦演奏,我有了這種想法:也許我投入到文本編輯器中的腦細(xì)胞數(shù)量和他為投入所喜好的樂(lè)器的演奏中差不多吧。我還有種奇異的想象,當(dāng)他獨(dú)奏的時(shí)候,腦中的核磁共振圖和我在使用 Vim 中操控代碼的的圖像也許不會(huì)相差太大吧?
如果你愿意的話(huà)請(qǐng)你仔細(xì)思考下,以下是一個(gè) Vimmer 的學(xué)習(xí)旅程的剪輯。
Vim 涅磐所經(jīng)歷的漫長(zhǎng)而艱苦的道路
星期一
“Eclipse 當(dāng)然是簡(jiǎn)潔實(shí)用的。”
“但是一些滿(mǎn)臉落腮胡的奇怪家伙在工作中似乎使用 vim 確實(shí)非??欤覒?yīng)該試一下。”
“好吧!我弄了個(gè) Gvim,這看起來(lái)不是很糟糕,這里甚至還有菜單界面!”
“等等,什么?我的文本去哪了?等一下,撤銷(xiāo),不要啊!”
“:help”
“:q!!!!!”
……
今天剩下的時(shí)間還是回到擁有讓人上癮的自動(dòng)補(bǔ)全樣板功能的 Eclipse 中獲得解脫吧。
星期二
“好吧 Vim,這是新的一天了,這是個(gè)磨礪自己學(xué)習(xí)新東西的一個(gè)嶄新的機(jī)會(huì),我不是那么容易放棄的人!”
“為什么我就不能一直呆在插入模式里面呢?FJDSAKLFJDALSKJKLDF(發(fā)狂的敲擊鍵盤(pán))……”
“等一下,你在告訴我保存的時(shí)候必須按 Esc-Shift-:-w-Enter?這簡(jiǎn)直就是狗屁啊。”
“在花了 2 個(gè)小時(shí)學(xué)習(xí)教程以后,我基本上懂的就是 ddp 命令可以交換兩行的內(nèi)容,真是蛋疼啊。”
一個(gè)禮拜以后
“哇噢,任何地方都有 Vim 啊,這意味著這付出的所有的努力將不會(huì)白費(fèi),比如當(dāng)我用 ssh 遠(yuǎn)程登入主機(jī)修改一些配置的時(shí)候。”
“太爽了,嘿,朋友們來(lái)看看這個(gè)全暗色的配色主題,我新的工具鏈表面上看起來(lái)非常安逸了。”
“噢,真是扯蛋,我的 .vimrc 沒(méi)有在我的遠(yuǎn)程主機(jī)里,當(dāng)我 ssh 登入編輯一些配置的時(shí)候,所有我的酷玩意都沒(méi)了。”
兩個(gè)月以后
HJKL 的移動(dòng)方式習(xí)慣成自然,你神秘的失去了使用鼠標(biāo)的能力。
“我將始終使用我剛下載的這 400 個(gè)插件!尤其是這個(gè)折疊 latex 語(yǔ)法的插件,噢,哥們。”
“使用小箭頭方向鍵簡(jiǎn)直是自我折磨啊。”
“再見(jiàn),Caps Lock 鍵。”
“就這樣吧,這是忍耐的極限,Vim 甚至不能讓文本合適的自動(dòng)換行,我準(zhǔn)備回到 edit.com了。”
一年后
更少的大聲說(shuō)話(huà)了。
安裝 command-T 插件,每天節(jié)約成百上千次的鍵盤(pán)敲擊。
用宏試著讓你肩膀后的某個(gè)人感到印象深刻,只需要對(duì)整個(gè)文件混合大小寫(xiě)和摻雜 ROT13 暗碼(回轉(zhuǎn)十三位加密)。
最終在某個(gè)奇跡般的一天學(xué)會(huì)在肌肉記憶里用 ctrl+[ 來(lái)延緩了腕關(guān)節(jié)炎癥降臨。
學(xué)會(huì)了移動(dòng)光標(biāo),使用 visual 模式和 * 鍵——這意味著已經(jīng)沒(méi)有退路了。
“Vim 不支持交互緩存?都 20 年了?好吧,作為一名黑客,我決定給它添加這項(xiàng)支持。”
查看 Vim 代碼庫(kù),瘋狂地讓它向相反的方向運(yùn)行。
“不管是誰(shuí)都需要在編輯器里弄個(gè)控制臺(tái)!!!這就是 unix 哲學(xué)。”
對(duì)周?chē)?rdquo;Vim 只是將一個(gè)編輯模式合并到真正的編輯器中“觀(guān)念感到無(wú)可忍耐。
因?yàn)槟憷鲜窃诹奶焓依锪钊擞憛挼鼗貜?fù)”:w”,IRC的朋友們最后將你孤立。
兩年以后
Vim 腳本就是一種對(duì)上帝的深?lèi)和唇^。
有點(diǎn)覺(jué)得 emacs 的從始至終的指令模式相對(duì)有點(diǎn)像在天堂一樣。
“我昨晚做了一個(gè)噩夢(mèng),夢(mèng)到我始終沒(méi)有學(xué)會(huì)在寬屏顯示器中垂直切分窗口,這樣提心吊膽真是夠混帳啊。”
偷偷地瞄一下周?chē)?,綁?ctrl+s 到保存動(dòng)作,允許自己悄悄地松一口氣。
意識(shí)到 HJKL 搜索定位不足以成為時(shí)間節(jié)約的終極工具,發(fā)現(xiàn) :python 腳本,所建立的大量定制功能達(dá)到鼎盛期,對(duì)<Leader> 鍵綁定,直到你的鍵盤(pán)類(lèi)似于 NASA 指揮中心控制面板一樣有點(diǎn)繁多到荒謬的功能,感覺(jué)有一點(diǎn)糟糕。
“嘿,每個(gè)聽(tīng)的到我聲音的家伙過(guò)來(lái)看看,我現(xiàn)在控制電腦,寫(xiě)博客,檢查郵件,運(yùn)行測(cè)試,調(diào)試程序,瀏覽 hackernews
所有的一切都能在 Vim 溫暖舒適、超級(jí)可以定制化的母體中進(jìn)行。為什么你這小子不做幾個(gè)后空翻來(lái)慶祝一下呢?”
模糊又很長(zhǎng)某段時(shí)間之后
在“文本編輯中模態(tài)的明顯優(yōu)勢(shì)”演講結(jié)束后失去了幾個(gè)朋友。
盡情享受在 github.com/me/vimfiles (并沒(méi)有)中分享自己配置的快樂(lè)中,強(qiáng)制自己寫(xiě)關(guān)于如何特立獨(dú)行地安裝語(yǔ)法檢查,lint工具,自動(dòng)補(bǔ)全,快速文檔查看,成噸的殺手級(jí)縮寫(xiě),世界上所有文件類(lèi)型對(duì)應(yīng)的插件,使 Vim 在每種功能的高效性上接近真正的 IDE 的博客帖子。開(kāi)機(jī)時(shí)間日志寫(xiě)入服務(wù)器,下意識(shí)地使用 nano 來(lái)編輯配置文件。不會(huì)為沒(méi)有使用插件和 vimrc 中的更多語(yǔ)法而更新所有的配置文件而感到深深的羞愧。
變得十分淡定,重復(fù)性的編輯任務(wù)再也難不住你,不再去參加 emacs 與 Vim 誰(shuí)好誰(shuí)壞的爭(zhēng)論。
...這就是你用 Vim 時(shí)大腦的終級(jí)形態(tài)