Vim 公案
英文原文:Tom Ryder - Vim Koans 譯者:燃魔蜥
Wq 大師和 Windows 開發者
Wq 大師正在指導一些 Vim 菜鳥。在他贊美許多 Vim 的美德的演講之后,他問道是否還有問題。 一個年輕人舉起了手。
“大師,通過怎樣的手段可以過濾出純文本表格中包含‘tcp’的行的第二列?”
Wq 大師什么也沒說,轉過去在身后的白板上寫道:
:%!awk '/tcp/ {print $2}'
其他學生竊竊私語并表示贊同。
“但是我是在 Windows 下開發的??”那個學生結結巴巴的說。
Wq 大師再次轉過身去,擦掉了命令并寫道:
:v/tcp/d:g/tcp/s/\S\+\s\+\(\S\+\)\s.*/\1/
“什么!對于這樣一個簡單問題來說這太復雜了!”那個學生哭訴道。
Wq 大師再次轉過身去,擦掉了命令并寫道:
Microsoft Excel
學生頓悟。
沒有太大的差異
一天,一個和尚拜訪了 Wq 大師,并詢問道:“大師,如果我掌握了 Vim,我的代碼會有什么不同?”
Wq 大師回答道:“使用 Vim 之前:聲明、定義、處理、打印;使用 Vim 之后:聲明、定義、處理、打印。”
Wq 大師和 Markdown 侍僧
一個 Markdown 侍僧來找 Wq 大師并向他展示他的 Vim 插件。
“看,大師。”他說道:“我差不多已經完成了 Vim 宏,它可以將 Markdown 轉化為 HTML。 我的函數縱橫交織,我的解析器是效率的典范,并且我的結果完美無瑕。 我敢說我已經掌握了 Vimscript,并且我的作品將會驗證 Vim 是一款面向英明的開發者的現代編輯器! 我做的正確么?“
Wq 大師讀了好幾分鐘侍僧的代碼一語不發。 然后他打開一個 Markdown 文檔,并鍵入:
:%!markdown
HTML 立即填滿了緩沖區。 侍僧哭了起來。
Wq 大師和 Unix 大師
一個年長的 Unix 大師來找 Wq 大師。
“我很困惑,Wq。關于你教導 Vim 的方式。 Vi 是圣潔的,但是 Vim 不是;它的代碼蔓延滿地,他的特性吞噬內存;他的二進制龐大臃腫;他的行為頗不一致。 這并不是 Unix 之道。我害怕你已經誤導了你的學生。有什么可以挽回的么?”
Wq 大師點點頭。“你說的對”,他說道。“Vim 并不完整。我們來修復它吧。我們開始好么?”
年長的 Unix 大師表示同意,并打開一個命令行。他鍵入:
$ vi vim.c
他開始寫代碼。Wq 大師看著他很長一段時間然后問他:“你實現的是哪種 Vi?Nvi?Vim?Elvis?”
“我不知道”,Unix 大師說道。“管它呢。”
Wq 大師點點頭。 Unix 大師呆坐片刻,沒有保存便關閉了文檔。
沒有最好的工具
一天晚上有風暴,Wq 大師的房子塌了。 第二天早上,他用他的舊工具開始重建房子。 他的學徒過來幫他,他們建了一段時間并取得了良好的進展。 在工作的過程中,學徒開始跟 Wq 大師講他最近的成果。
“大師,我開發完一個絕妙的 Vim 腳本,可以給出一個文檔的所有有用的信息。 它能計算單詞、句子、段落的數量,甚至可以告訴你這個文檔使用的是什么語法高亮規則。 我一直在我的狀態欄中使用它。 這是一個優美的作品,我對它非常的自豪。 誠然,Vim 是一個偉大的工具!”
Wq 大師沒有回應。以為自己無意中觸怒了大師,學徒陷入沉默并繼續工作。
學徒并排放置了兩塊木板并擺好了釘子,正準備釘進去,卻發現夠不到錘子。
“能幫我遞下錘子么,大師?”
Wq 大師遞給學徒一把鋸子。
學徒頓悟。
Pope 大師的夢
Pope 大師有一次夢到自己成為了 Emacs 用戶。 當他醒過來的時候,他感嘆道:
“我不知道是我 Tim Pope 夢到了我是一個 Emacs 用戶,還是一個 Emacs 用戶夢到了我是 Tim Pope!”
優越的編輯器
Neil 大師和 Wyatt 大師因教導 Vim 之道而聞名,他們周游各地教導學生。
一天一個學生問他們:“Neil 大師談吐溫和平穩,他說的話小心謹慎,語調卻不容置疑。 但是 Wyatt 大師卻充滿激情,開始和停止,他的演講快速而充滿活力,他的靈魂融入了他的演講。 請問教導 Vim 的方式哪個最優秀?”
Neil 大師和 Waytt 大師異口同聲地答道:“編輯器哪個最優秀?Vi 還是 ex?”
數個學生頓悟。
慢學生的絕望
Wq 大師正在吃午餐,一個學生沖進來他的房間跪在他的腳下。 眼睛里充滿淚水,他看起來有深深的挫敗感。 Wq 大師放下他的碗問道:“什么讓你如此沮喪,年輕人?”
“大師”,他說道:“我放棄了。我永遠也掌握不了 Vim! 我永遠也學不會前人偉大的方法! 我永遠也學不會將 Vim 用得簡單粗暴并有著完美的效率!”
“你為什么這么說?”
“目前為止,我是最差的學生。 當我掙扎著寫了一個簡單的宏,我的同學們正在輕松地寫著遞歸宏。 當我試著記住空格字符的正則表達式時,我的同學們正在寫 Vimscript 中的循環復雜度測試。 我太慢了,我感到羞愧,恐怕我已經失敗了。”
Wq 大師站起來。“跟我到窗前”,他說道。
學生站起來跟隨 Wq 大師到了窗前,看到街道對面 Wq 大師鄰居的房子。 透過窗戶,兩個像是西裝革履的年輕人正在寫一份文檔。
“你看到了什么?”Wq 大師問道。學生看了一會。
“那個年輕人正在用 Microsoft Excel 來生成電子表格。 它正在手動更新每一個單元。 他甚至都不知道如何使用公式。 他輸入大寫字母要按 Caps Lock,輸入完了再按一下。 他太慢了! 我不明白。他為什么還能這么愉悅?”
“看到這個年輕人,你為什么不能?”Wq 大師回應道。
學生頓時就領悟了。他的名字是 Qa,之后他成為了一名偉大的大師。
征服 Vimscript
一個學生詢問 Wq 大師:“我什么時候可以知道我已經掌握了 Vimscript?”
Wq 大師回答道:“當你從未用過它的時候。”
Vim 的挽歌
一個年輕人懇求 Wq 大師做他的觀眾,聽他讀他最近的作品,一首 Vim 輝煌的挽歌。 他眼中噙著淚水開始朗讀他的肺腑之作,仿佛將他的靈魂傾倒在他對文本編輯器的崇拜之心上。
大師坐在那里聽了一會他的詩。 第十句詩之后,他舉起了他的手。 “請你不要讀了。你的詩太可怕了。”
年輕人非常的生氣。
“Wq 大師,你肯定是所有人中最能感受這首詩的人。你是一個了解編輯器之美的人。 你怎么可以如此毫不耐煩、不屑一顧?甚至這首詩我都是用 Vim 寫的!”
“你用 Vim 寫的”,大師說道。“但是你的格式是不均勻的,你的韻腳是不一致的,你的隱喻模糊不清。 你用了一個很好的工具寫了一首很糟的詩。 你不是詩人,Vim 也不能讓你成為一個詩人。 我的學生有很多并不是程序員,Vim 也同樣沒法幫助他們。”
“Vim 是永恒美麗的”,詩人抗議著。“對于挽歌來說它是值得一寫的題材。”
“Vim 不會永恒的。 Nvi 不會永恒的。 Vi 本身也不會永恒的,只有 Vi 的本質才會。 Emacs 有著 Vi 本質,nano 有著 Vi 本質,甚至 Notepad 也有 Vi 本質。 你目光狹窄,你趨炎附勢,因此你沒法把握你詩的主題的真正價值。 你必須離開。等你掌握了 Emacs 再回來。”
詩人非常的羞愧地離開了。他再也沒有回來。
<span id="shareA4" class="fl"> </span>