英文原文:Tom Ryder - Vim Koans
本翻譯已獲得原作者 Tom Ryder 的許可耿戚。
Wq 大師和 Windows 開發(fā)者
Wq 大師正在指導(dǎo)一些 Vim 菜鳥扬卷。在他贊美許多 Vim 的美德的演講之后宇挫,他問(wèn)道是否還有問(wèn)題歪脏。 一個(gè)年輕人舉起了手。
“大師牵现,通過(guò)怎樣的手段可以過(guò)濾出純文本表格中包含‘tcp’的行的第二列?”
Wq 大師什么也沒說(shuō),轉(zhuǎn)過(guò)去在身后的白板上寫道:
:%!awk '/tcp/ {print $2}'
其他學(xué)生竊竊私語(yǔ)并表示贊同元咙。
“但是我是在 Windows 下開發(fā)的??”那個(gè)學(xué)生結(jié)結(jié)巴巴的說(shuō)。
Wq 大師再次轉(zhuǎn)過(guò)身去巫员,擦掉了命令并寫道:
:v/tcp/d
:g/tcp/s/\S\+\s\+\(\S\+\)\s.*/\1/
“什么庶香!對(duì)于這樣一個(gè)簡(jiǎn)單問(wèn)題來(lái)說(shuō)這太復(fù)雜了!”那個(gè)學(xué)生哭訴道简识。
Wq 大師再次轉(zhuǎn)過(guò)身去赶掖,擦掉了命令并寫道:
Microsoft Excel
學(xué)生頓悟。
沒有太大的差異
一天七扰,一個(gè)和尚拜訪了 Wq 大師奢赂,并詢問(wèn)道:“大師,如果我掌握了 Vim颈走,我的代碼會(huì)有什么不同膳灶?”
Wq 大師回答道:“使用 Vim 之前:聲明、定義立由、處理轧钓、打印锐膜;使用 Vim 之后:聲明毕箍、定義、處理道盏、打印而柑。”
Wq 大師和 Markdown 侍僧
一個(gè) Markdown 侍僧來(lái)找 Wq 大師并向他展示他的 Vim 插件荷逞。
“看媒咳,大師≈衷叮”他說(shuō)道:“我差不多已經(jīng)完成了 Vim 宏涩澡,它可以將 Markdown 轉(zhuǎn)化為 HTML。 我的函數(shù)縱橫交織院促,我的解析器是效率的典范筏养,并且我的結(jié)果完美無(wú)瑕斧抱。 我敢說(shuō)我已經(jīng)掌握了 Vimscript,并且我的作品將會(huì)驗(yàn)證 Vim 是一款面向英明的開發(fā)者的現(xiàn)代編輯器渐溶! 我做的正確么辉浦?“
Wq 大師讀了好幾分鐘侍僧的代碼一語(yǔ)不發(fā)。 然后他打開一個(gè) Markdown 文檔茎辐,并鍵入:
:%!markdown
HTML 立即填滿了緩沖區(qū)宪郊。 侍僧哭了起來(lái)。
Wq 大師和 Unix 大師
一個(gè)年長(zhǎng)的 Unix 大師來(lái)找 Wq 大師拖陆。
“我很困惑弛槐,Wq。關(guān)于你教導(dǎo) Vim 的方式依啰。 Vi 是圣潔的乎串,但是 Vim 不是;它的代碼蔓延滿地速警,他的特性吞噬內(nèi)存叹誉;他的二進(jìn)制龐大臃腫;他的行為頗不一致闷旧。 這并不是 Unix 之道长豁。我害怕你已經(jīng)誤導(dǎo)了你的學(xué)生。有什么可以挽回的么忙灼?”
Wq 大師點(diǎn)點(diǎn)頭匠襟。“你說(shuō)的對(duì)”该园,他說(shuō)道酸舍。“Vim 并不完整爬范。我們來(lái)修復(fù)它吧父腕。我們開始好么?”
年長(zhǎng)的 Unix 大師表示同意青瀑,并打開一個(gè)命令行。他鍵入:
$ vi vim.c
他開始寫代碼萧诫。Wq 大師看著他很長(zhǎng)一段時(shí)間然后問(wèn)他:“你實(shí)現(xiàn)的是哪種 Vi斥难?Nvi?Vim帘饶?Elvis哑诊?”
“我不知道”,Unix 大師說(shuō)道及刻《瓶悖“管它呢竞阐。”
Wq 大師點(diǎn)點(diǎn)頭暑劝。 Unix 大師呆坐片刻骆莹,沒有保存便關(guān)閉了文檔。
沒有最好的工具
一天晚上有風(fēng)暴担猛,Wq 大師的房子塌了幕垦。 第二天早上,他用他的舊工具開始重建房子傅联。 他的學(xué)徒過(guò)來(lái)幫他先改,他們建了一段時(shí)間并取得了良好的進(jìn)展。 在工作的過(guò)程中蒸走,學(xué)徒開始跟 Wq 大師講他最近的成果仇奶。
“大師,我開發(fā)完一個(gè)絕妙的 Vim 腳本比驻,可以給出一個(gè)文檔的所有有用的信息猜嘱。 它能計(jì)算單詞、句子嫁艇、段落的數(shù)量朗伶,甚至可以告訴你這個(gè)文檔使用的是什么語(yǔ)法高亮規(guī)則。 我一直在我的狀態(tài)欄中使用它步咪。 這是一個(gè)優(yōu)美的作品论皆,我對(duì)它非常的自豪。 誠(chéng)然猾漫,Vim 是一個(gè)偉大的工具点晴!”
Wq 大師沒有回應(yīng)。以為自己無(wú)意中觸怒了大師悯周,學(xué)徒陷入沉默并繼續(xù)工作粒督。
學(xué)徒并排放置了兩塊木板并擺好了釘子,正準(zhǔn)備釘進(jìn)去禽翼,卻發(fā)現(xiàn)夠不到錘子屠橄。
“能幫我遞下錘子么,大師闰挡?”
Wq 大師遞給學(xué)徒一把鋸子锐墙。
學(xué)徒頓悟。
Pope 大師的夢(mèng)
Pope 大師有一次夢(mèng)到自己成為了 Emacs 用戶长酗。 當(dāng)他醒過(guò)來(lái)的時(shí)候溪北,他感嘆道:
“我不知道是我 Tim Pope 夢(mèng)到了我是一個(gè) Emacs 用戶,還是一個(gè) Emacs 用戶夢(mèng)到了我是 Tim Pope!”
優(yōu)越的編輯器
Neil 大師和 Wyatt 大師因教導(dǎo) Vim 之道而聞名之拨,他們周游各地教導(dǎo)學(xué)生茉继。
一天一個(gè)學(xué)生問(wèn)他們:“Neil 大師談吐溫和平穩(wěn),他說(shuō)的話小心謹(jǐn)慎蚀乔,語(yǔ)調(diào)卻不容置疑烁竭。 但是 Wyatt 大師卻充滿激情,開始和停止乙墙,他的演講快速而充滿活力颖变,他的靈魂融入了他的演講。 請(qǐng)問(wèn)教導(dǎo) Vim 的方式哪個(gè)最優(yōu)秀听想?”
Neil 大師和 Waytt 大師異口同聲地答道:“編輯器哪個(gè)最優(yōu)秀腥刹?Vi 還是 ex?”
數(shù)個(gè)學(xué)生頓悟汉买。
慢學(xué)生的絕望
Wq 大師正在吃午餐衔峰,一個(gè)學(xué)生沖進(jìn)來(lái)他的房間跪在他的腳下。 眼睛里充滿淚水蛙粘,他看起來(lái)有深深的挫敗感垫卤。 Wq 大師放下他的碗問(wèn)道:“什么讓你如此沮喪,年輕人出牧?”
“大師”穴肘,他說(shuō)道:“我放棄了。我永遠(yuǎn)也掌握不了 Vim舔痕! 我永遠(yuǎn)也學(xué)不會(huì)前人偉大的方法评抚! 我永遠(yuǎn)也學(xué)不會(huì)將 Vim 用得簡(jiǎn)單粗暴并有著完美的效率!”
“你為什么這么說(shuō)伯复?”
“目前為止慨代,我是最差的學(xué)生。 當(dāng)我掙扎著寫了一個(gè)簡(jiǎn)單的宏啸如,我的同學(xué)們正在輕松地寫著遞歸宏侍匙。 當(dāng)我試著記住空格字符的正則表達(dá)式時(shí),我的同學(xué)們正在寫 Vimscript 中的循環(huán)復(fù)雜度測(cè)試叮雳。 我太慢了想暗,我感到羞愧,恐怕我已經(jīng)失敗了债鸡〗酰”
Wq 大師站起來(lái)⊙峋“跟我到窗前”,他說(shuō)道告唆。
學(xué)生站起來(lái)跟隨 Wq 大師到了窗前棺弊,看到街道對(duì)面 Wq 大師鄰居的房子晶密。 透過(guò)窗戶,兩個(gè)像是西裝革履的年輕人正在寫一份文檔模她。
“你看到了什么稻艰?”Wq 大師問(wèn)道。學(xué)生看了一會(huì)侈净。
“那個(gè)年輕人正在用 Microsoft Excel 來(lái)生成電子表格尊勿。 它正在手動(dòng)更新每一個(gè)單元。 他甚至都不知道如何使用公式畜侦。 他輸入大寫字母要按 Caps Lock元扔,輸入完了再按一下。 他太慢了旋膳! 我不明白澎语。他為什么還能這么愉悅?”
“看到這個(gè)年輕人验懊,你為什么不能擅羞?”Wq 大師回應(yīng)道。
學(xué)生頓時(shí)就領(lǐng)悟了义图。他的名字是 Qa减俏,之后他成為了一名偉大的大師。
征服 Vimscript
一個(gè)學(xué)生詢問(wèn) Wq 大師:“我什么時(shí)候可以知道我已經(jīng)掌握了 Vimscript碱工?”
Wq 大師回答道:“當(dāng)你從未用過(guò)它的時(shí)候娃承。”
Vim 的挽歌
一個(gè)年輕人懇求 Wq 大師做他的觀眾痛垛,聽他讀他最近的作品草慧,一首 Vim 輝煌的挽歌。 他眼中噙著淚水開始朗讀他的肺腑之作匙头,仿佛將他的靈魂傾倒在他對(duì)文本編輯器的崇拜之心上漫谷。
大師坐在那里聽了一會(huì)他的詩(shī)。 第十句詩(shī)之后蹂析,他舉起了他的手舔示。 “請(qǐng)你不要讀了。你的詩(shī)太可怕了电抚√璧荆”
年輕人非常的生氣。
“Wq 大師蝙叛,你肯定是所有人中最能感受這首詩(shī)的人俺祠。你是一個(gè)了解編輯器之美的人。 你怎么可以如此毫不耐煩、不屑一顧蜘渣?甚至這首詩(shī)我都是用 Vim 寫的淌铐!”
“你用 Vim 寫的”,大師說(shuō)道蔫缸⊥茸迹“但是你的格式是不均勻的,你的韻腳是不一致的拾碌,你的隱喻模糊不清吐葱。 你用了一個(gè)很好的工具寫了一首很糟的詩(shī)。 你不是詩(shī)人校翔,Vim 也不能讓你成為一個(gè)詩(shī)人弟跑。 我的學(xué)生有很多并不是程序員,Vim 也同樣沒法幫助他們展融〗讶希”
“Vim 是永恒美麗的”,詩(shī)人抗議著告希∑私“對(duì)于挽歌來(lái)說(shuō)它是值得一寫的題材⊙嗯迹”
“Vim 不會(huì)永恒的喝噪。 Nvi 不會(huì)永恒的。 Vi 本身也不會(huì)永恒的指么,只有 Vi 的本質(zhì)才會(huì)酝惧。 Emacs 有著 Vi 本質(zhì),nano 有著 Vi 本質(zhì)伯诬,甚至 Notepad 也有 Vi 本質(zhì)晚唇。 你目光狹窄,你趨炎附勢(shì)盗似,因此你沒法把握你詩(shī)的主題的真正價(jià)值哩陕。 你必須離開。等你掌握了 Emacs 再回來(lái)赫舒『芳埃”
詩(shī)人非常的羞愧地離開了。他再也沒有回來(lái)接癌。