我是如何學會愛上 Vim 的

2021-09-14 06:13:58 字數 4250 閱讀 3574

這是第一篇翻譯文,帶著興奮,翻譯自己喜歡的文章,這種感覺很美妙~
sanchit gerajust another opinionated, run-off-the-mill geek • adtech @amazon • engineering @uwaterloo.

以下是譯文:

我與 vim 之間既苦澀又甜蜜的關係維持了相當長的一段時間。

在過去的幾年間,我數次嘗試著去學習 vim,但每一次到最後還是放棄了。我更願意去使用我的「初級」文字編輯器(通常是 atom)。

但在幾周以後,我發現自己無法使用 atom 了,因為其中乙個模糊的連通性問題,這個問題使得我建立在遠端連線的設定完全失效了。

在經歷過五個令人悲傷的階段後(譯者注:哦,天知道發生了什麼),我決定咬緊牙關(再一次)試著去學習 vim。這一次我強迫自己去使用 vim,並且是只使用 vim。

我知道——我可以很輕鬆的轉向另一種更簡單易用的編輯器比如說 sublime。或者甚至可以使用非常成熟的 ide 比如 intellij。

但是,我還是決定闖一闖所謂的「地獄」。下面是我學習到的一些東西:

由於 vim 的設計初衷就是完全依賴鍵盤就能工作的編輯器,所以這也成了它既吸引人又讓人討厭的地方。畢竟當 vi 被構思出來時,只需要滑鼠點點的那些 gui 視覺化介面還並不是怎麼實用的東西呢。

vim 使用模式(mode)的方式來操作,有兩種主要的模式最常被使用到:

vim 也還有其他模式,其中乙個是 虛擬模式(visual mode),在選擇大段文字的時候使用。一般來說,這些模式在平時使用的頻率不高。

vim 一般是在終端模擬器中使用的,但單獨的發行版也是有的。vim 可以被使用在任何 unix 和 linux 作業系統上。vim 的爺爺——vi,作為 unix 規範的一部分,很自然的,它被預裝在任何基於 unix 的合格作業系統上。

「可組合性」使得 vim 在很大程度上區別於其他編輯器。它賦予了 vim 獨有的語言。

它在文字編輯和操作的語境中,引入了名詞和動詞的概念。

動詞描述的是你能做什麼(比如刪除、改變、移動等)。

名詞描述的是正在發生的事情(通常是單詞、行或者文字中的某些地方)。

其中一些常見的動名詞包括:

動詞

d:刪除

c:改變(覆蓋)

y:複製

>:縮排

操作h,j,k,l:向左,向下,向上,向右

w:下乙個單詞

b:上乙個單詞

0:行首

$:行末

a:單詞周圍

這份列表並不詳盡,其實有非常多可使用的快捷鍵。但是你僅僅使用其中非常基礎的幾個快捷鍵就能夠實現大部分操作。方法就是將動名詞和偶爾出現的數字組合在一起,你就能建立出不同的行為去操作需要的文字。

舉個例子,為了刪除乙個單詞(delete aword),你可以鍵入組合鍵dw

從當前位置刪除兩個單詞(delect2word),你可以輸入d2w

從當前位置一路刪除至行末,你可以輸入d$

(譯者注:我其實也是乙個 newbie,看到這幾個例子立馬去試了一下,發現真好用,試著鍵入d0,哈哈,果然將當前位置至行首的內容都刪除了~)

刪除當前括號內的所有內容,你可能會鍵入di(,是的,就是這樣 :)

這種工作方式似乎沒有什麼好爭論的,它們是那麼高效優雅。如果你強迫自己每天去使用這些組合,它們會成為你的第二天性。在一段時間後,你會發現通過減少按鍵次數而獲得的編輯速度是令人驚訝的。

是的,我知道這個已經被用的不能再多了,但請允許我再用一次 :)

vim 有著臭名昭著的學習曲線。而一旦你度過了那段艱難時期——經常對著電腦螢幕發詛咒(譯者注:當你用不了滑鼠,想要跳到某個字元卻不知道怎麼能快一點,傻傻的移動方向鍵,內心是多麼的崩潰。。。),vim 用起來其實挺好玩的。

學習使用 vim 的那些神秘命令,讓你能夠在操作檔案上飛起來~一段時間過後,當你的手指離開了鍵盤或者不自覺的去使用滑鼠的時候,你會覺得哪些地方不對勁(譯者注:vim 讓你的手指完全不需要離開鍵盤就能飛一般的工作,用慣了 gui 的我在以前想都不敢想。。。怎麼可能嘛,是的,vim 做到了!)

僅僅在乙個月之後,我發現自己在使用電腦的時候總是會不自覺的去用那些快捷鍵,儘管那些軟體並沒有這些快捷鍵。

事實上,我也曾經考慮過在瀏覽網頁的時候嘗試使用這個 擴充套件 來啟用 vim 快捷鍵。

幸運的是,程式設計社群都承認 vim 的地位。大多數主流的文字編輯器都總是有那麼一些方法能夠啟用 vim 的快捷鍵。這也使得 「vimmers」 能夠脫離在世界上最好的兩種事物上要做出選擇的苦海。

要想提高在 vim 上的造詣,沒有任何其他什麼武功秘籍,唯有日夜苦練基本功。行之有效的方式就是強迫自己用 vim。

舉個例子,當你使用 vim 編輯檔案的時候,盡量不要使用你之前的舊習慣。大多數人在剛開始的時候應該盡量遠離 『正常模式』。

相反,他們試圖花盡可能多的時間在『插入模式』上。在這個模式上,很容易讓人產生舒適感。這也容易讓人在編輯檔案的時候學不到任何其他新的東西。很明顯這是乙個錯誤。

如果你確實有興趣學習如何讓 vim 為你工作,那麼你必須付出一些努力,花些時間去找出做事情的正確方式。

如果你發現自己為了完成任務,不停地重複按那些鍵,請先停下來。因為很可能你正在做的事情有更好的方式去完成。

google 一下,記住它,加入你的知識庫中。相比於去閱讀整個命令清單並試圖希望自己會在將來會需要用到其中乙個命令,用這種方式非常容易能學到新的命令。

在一段時間後,當你在無腦敲鍵盤的時候,你就可能會產生一種直覺(譯者注:這種直覺類似於意識到自己目前在解決這件事的方式上可能會有更好的處理辦法)。那麼請聽從你的直覺。

許多人迴避 vim 的另乙個重要原因就是 vim 看起來光禿禿的只有編輯這乙個最最基本的功能。

確實,預設情況下,vim 本身並沒有自帶什麼外掛程式或者好用的功能的。並且,vim 認為好用的功能可能與程式設計師使用的現代 ide 認為的好用的功能有著比較大的差別。

vim 其實是有語法高亮功能的(但預設情況下是被禁用的)。vim 也沒有行號顯示(也需要你去將其開啟)。

不用驚訝了,下面這些東西也是預設沒有的:

這些都是不預裝在 vim 中的。

譯者注:其實寫到這裡,我覺得已經有很多人萌生了退卻之意,確實要想玩好 vim,需要花不少時間,免不了諸多的折騰。愛折騰的人自然是興奮不已,比如譯者自己。但不愛折騰的,譯者還是鼓勵去試著玩玩看,雖然現代 ide 自帶了相當多的功能,但是很多功能你也是需要去折騰才能熟練的使用。
這似乎是乙個巨大的轉折點——尤其是對於那些使用強大的 ide 的開發者們。大量的外掛程式和擴充套件被預裝在上面,為了能夠使工作更有效率。

從這個角度上來看,vim 卻有其侷限性。

然而,在另乙個方面,即便你欣賞現代 ide 提供的東西,以及通過它們構建出的東西——你也會意識到,大多數的 ide (甚至是一些普通的編輯器,如 atom)都帶來了大量的膨脹。

高階的 ide 充斥著許許多多普通使用者幾乎很少使用的特性。

學習有效地使用 vim 在某種程度上其實是一種鍛鍊,你可以慢慢發現哪些外掛程式對你來說是至關重要的。重點是打造出一款適合你的需求和工作流的獨一無二的編輯器。(譯者注:這一點太能打動我了 tat)

多數情況下,使用 ide 這些完全成熟體無可厚非。這些高階功能給你帶來的好處確實可能遠超使用 vim 帶來的。

但是!vim 能夠讓你搞清楚自己,因為它是直面你的內心的 :p

儘管 vim 看起來光禿禿的,但是它其實是擁有乙個非常完備、蓬勃發展的外掛程式生態系統。

vim 擁有幾乎所有你能在其他編輯器中用到的外掛程式。你只需要找到那些你需要 的就好了。

讓我驚訝的是,在只有少量外掛程式的情況下我能走得有多遠。目前我的 vim 大概只有 5 到 6 個「基本」外掛程式組成,但我真不覺得我錯過了什麼。

vim 並不是完美的,而且也絕對不是適合所有人的。

但是至少,學好 vim 有乙個好處,萬一你哪一天突然不小心開啟了 vim,然後找不到如何退出的方法。。。! ;)

我是如何愛上vi的

我把vi作為我的主要編輯器有兩個原因。乙個原因是我不能忍受ultraedit越來越慢的載入速度 我機器配置是256m記憶體,賽揚700 另乙個原因是我讀了一篇清華大學滇狐寫的有關vi的電子文件後,vi的某個功能 後文會詳述 打動了我。我現在使用vi的水平應該算入門了。什麼叫入門呢?我找了一些網上關於...

愛上你,是我的幸福

這個星期的工作令我覺得身心疲累,但腦海中你的影子卻從未模糊過,想你的思緒一刻比一刻濃烈,我盡我每一分力來記掛你,想念你已經成為我每日必做的一件事。記得嗎?我們是在那個充滿著悲怨傳說的七月七日認識的,在那個大氣得有點討人厭的京城,我們相愛了。從此,遙遠的北京就成了我夢牽魂繞的城市,我最喜歡你親呢地呼我...

愛上你是我的錯

愛上你是我的錯 我曾經有乙個夢想,希望自己長大後能有一位美若天仙的女孩做朋友,有一段令我難以忘懷的經歷。也許我的夢想只是乙個安慰自己的慌言。直到現在,我才深深地體會當初的慌言反我傷了,而且傷得很深。上帝安排你我相遇,同樣也安排了你我命運的悲劇。你曾經的花言巧語對我而言卻是甜言蜜語 你的花容月貌已深深...