爲什麼我不是 Vim 的狂熱粉絲?

作者 | FadinGeek

譯者 | Sambodhi

策劃 | 閆園園

有大量的開發人員在開發過程中使用 Vim,我是那些認爲 Vim 很糟糕的人之一,聽我說說吧。

前不久,我在之前的一篇文章裏曾說過,我非常討厭使用 Vim 來進行開發,很多人對我和我的看法提出了疑問。本文不僅闡明瞭這個問題,也解釋了爲什麼我沒有將 Vim 推薦給別人用於開發。

我敢肯定有些人不贊同我這些觀點,這是好事。以下列出的一切都是我個人的觀點,每個人的觀點也都不同,如果是這樣的話,或許我會讓你改變主意,讓我們開始吧。

而且,標題是 “爲什麼我不是 Vim 的狂熱粉絲”,而不是 “爲什麼你應該停止使用 Vim”。總之,這就是我的觀點,別把它當回事。

Vim 是什麼?

Vim 是一款基於終端的文本編輯器,它可以被配置成幾乎任何東西,從一個基本的功能編輯器到一個完整的、功能豐富的 IDE。

它採用了 “模式系統”,你可以通過“i”、“ESC” 以及其他一些鍵來進行各種模式的切換,比如插入模式、可視模式、正常模式等,並與文檔進行交互。

默認情況下,Vim 看上去是空的,但在定製方面,文本編輯器可以被做成接近任何東西的樣子。至少對 Vim 來說,定製是最大的關鍵。更不用說,這款文本編輯器幾乎可以塞進任何功能,並被重新加工成其他類似的文本編輯器。一些類似的編輯器包括 Vi、Neovim 等。

文本編輯器確實是一頭 “野獸”,可以被做成幾乎任何東西。

我碰到的問題

然而,凡事總有壞處,Vim 中存在許多缺陷,讓我無法將其用於開發中。以下是幾條:

思想觀念

對於所有想知道的人來說,你按了 Esc 鍵進入正常模式,然後敲 “:q!”

作爲一名開發者,所用的程序,可能應該照顧到從 git 到自動完成,到語法高亮,諸如此類。我是說,如果你是一名開發者,你顯然更傾向於語法自動完成、git 集成、圖形化,和其他一些缺省的功能,而不是我們花時間自己做,因爲 Vim 是爲開發者設計的。

Vim,讓我們配置我們想要的東西。但是,這需要我們進行配置,而這些都是大家都需要的,並且可以在 Vim 中默認添加。

那麼,你也許會問,那些不需要額外功能的人呢?這個問題問得很好。一些非開發者,他們也使用 Vim,不需要任何自動完成或者相似的功能。這就是 Vi 或者 vi-minimal,因此這應該是可行的。

工作流——不同的模式

要是你明白了這一點,恭喜你。你理解了 Vim 的工作流。

以另一款文本編輯器爲例,比方說 Atom 或 Sublime,我們會有一個有 “模式” 的界面,你只需要輸入你所需要的內容。這樣既能節約時間,又能提高工作效率。

我是說,即使從邏輯上講,在打字之前按 “i” 鍵,在拷貝之前按 “Shift+V” 組合鍵,這在工作時可能看起來是一件小事,但從長遠來看,至少對我而言,是完全多餘的。

也許有人會說,由於 “模式系統” 在很大程度上是基於鍵盤的,所以它可以幫助工作流。但是,即使是這樣,我也可以 Atom 這種通用的文本編輯器,在任何地方都可以只用鍵盤和一種模式進行工作。

即使是最微小的事情,比如撤銷,我們也必須要按 Esc 鍵,確保我們處於正常模式,然後再按 “u” 鍵,我想直接按 “Ctrl+Z” 組合鍵會更快捷。更不用說,要適應這個非同一般的工作流,將會耗費很多的時間。

基於終端

文本編輯器中的 vim

現在,也許很多人會認爲這是一種優勢。當然,作爲一款可以直接從終端上打開的文本編輯器,它確實有很多優勢。我的意思是,它大概就是我在 tty(CUI)界面中所用到的文本編輯器。

不過,我個人覺得,它從終端上工作,存在很多缺陷。第一個最大的缺陷是,除了文本之外,它無法看到任何內容,這看起來可能是件小事,但是對於那些經常涉及圖形的遊戲開發者卻沒有太大的用處。同時,我可以在 Atom、Sublime 之類的文本編輯器快速查看任何意圖。

很耗費時間……

Vim 是一款需要花費大量的時間來進行配置和使用的文本編輯器,但其實不值得。我說的是真心話。

我用了三四年的時間來建立自己的高配置 vimrc 文件,並且已經適應了 Vim 的基礎工作流。不過,到了最後,我發現我可以用 “普通” 的文本編輯器來完成相同的工作,而不用花幾年的時間來調整。更不用說,像 VSCode 這樣的文本編輯器,只要登陸你的微軟賬戶,就能得到所有你已經完成的“配置”。(譯者注:原文有誤,VSCode 並不能直接使用微軟賬戶進行同步配置,要用到 Setting Sync 的 VSCode 插件才能做到同步配置)。而 Vim 則需要一個多小時才能做好充分的準備工作(那是我已經用了好幾個月來建立我的 vimrc 並且已經適應的前提下)。比起 VSCode,登陸時間連 2 分鐘都不到,你能明白我要表達什麼意思嗎?

太陳舊了(獎賞)

我稱這是一種獎賞,因爲陳舊總是不意味着壞,但有時候,它意味着過時。在我看來,Vim 對於這樣一款文本編輯器來說實在是太過陳舊了,它仍然使用 “hjkl” 鍵來移動光標。對於那些不知道的人來說,在鍵盤真正實現單獨的方向鍵之前,“hjkl”鍵是被當作方向鍵使用。

另外,還有一個簡單的附帶說明,那就是它在最近沒有得到改進。我的意思是,Vim 在最近的幾個發佈版本中加入了一些不常用的命令,集成了一些新的插件,還有一些後端的小改動。與其他編輯器相比,它需要更快的開發進展。

總結

我將在 YouTube 上製作更多的視頻,但我的觀點是這樣的:爲了使文本編輯器更高效,Vim 的努力似乎有點過頭了,而這種努力本身就沒有抓住重點。

作者簡介:

FadinGeek

擁有多重身份:佛教徒、Youtube 播主、開發者、設計師和編輯。

原文鏈接:

https://medium.com/interviewnoodle/why-im-not-a-big-fan-of-vim-vim-like-text-editors-7120889dce1d

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/-ZOvKS2aReP5hBkiRNcKNA