Vim 和 Emacs 到底哪個更牛逼一點?

請那些兩個全部用過的高手客觀的做出評判。


算月經貼吧

哪個好呢?您到網上搜一下會有千奇百怪的答案,涉及信仰、宗教、人生、夢想、性……

最後誰也說不出個準確的答案,因為每個人心中的稱都不一樣。

所以哪個稱手就用哪個吧。

寫代碼時,我在本地主要用Emacs,有時候嫌開啟太慢就VIM,伺服器上也基本用VIM。

看代碼的時候喜歡SublimeText 確實方便。

腳踏兩條船的不是異端,只是讓工具回歸工具了而已。


你不可能獲得一個客觀的評判的。因為真正『同時』精通 emacs / vi 兩者的人極少,這極少的人恰好大都是 唐望所說的得證大道、超級大牛、雲淡風輕型的人,根本就不會參合這樣的爭論。


為什麼亞伯拉罕和神摔跤能夠勝利

因為神有腕管綜合症

為了說明vim將移動放在模式中的好處,還是拿emacs中的來比較吧

|vim的normal-mode| emacs默認的|
-----------------------------------------
在emacs中並不方便的(修辭鍵+shift+其他按鍵或者沒有找到的)
| W和B | C-&>和C-&<| 也可能是forward-whitespace,但是這個函數沒有綁定 |e和ge | 我沒有找到| |E和gE | 沒有找到 | |}和{ | M-}和M-{ | 依然沒有那麼方便的(meta/alt開頭的) | w和b |M-f M-b | |)和( | M-e和M-a | 在emacs中方便的或者不常用的 |j和k | C-n和C-p | |^和$ | C-a和C-e | 也就這個方便些 |0 | C-c ^ |


首先我不認同Vim Vs. Emacs的討論是無意義的。我使用Vim的時間更長一點,在Linux, Mac OS X, Windows下均是作為「文本編輯器」。接觸Emacs主要是開始學習Clojure之後。老實說,在入門了兩個軟體之後(兩者的入門門檻都很高,入門是指有過一段時間的非學習目的的實際適用),我覺得吸收兩者的精華以配合自己的情況及場景為好。

我認為Emacs可以學學,至少是學學Emacs的key binding, 然後可以學學elisp, 理解一下Emacs的工作機制。

Emacs的key binding適用範圍非常廣。即使你不用Emacs, 肌肉記憶下幾個常用的移動游標的快捷鍵也是非常有好處的。因為這能夠給你跨操作系統的「一致體驗」

  1. Mac OS X下幾乎所有的文本輸入框,包括Chrome的Omnibox, XCode, IntelliJ, TextMate... 在這方面我覺得是OS X的一個巨大優勢:Apple鍵修飾的快捷鍵基本上是「功能鍵」,目的是完成一個功能,例如新建Tab, 關閉Tab, 而Ctrl修飾的快捷鍵保持了Emacs的keybinding,目的是為了「移動游標」, 例如Ctrl - K 刪除到行尾,Ctrl - A 移動到行首, Ctrl - E移動到行尾;
  2. Linux的Terminal. 抱歉我好多年不用Linux桌面,不知道Linux的桌面應用是否也支持Emacs keybinding. 我也見過不少同學用Vi的command line keybinding, 但是老實說本來就是大多數時候單行的編輯場景,用Vi這種帶模式的編輯實在沒必要。命令行下「輸入」佔大多數。
  3. Windows下的cygwin… 只知道這了。另外像Chrome的Web DevTools裡面支持少數幾個,例如Ctrl - L清空屏幕。

所以其實這方面我覺得對於「普通用戶」來說Emacs的意義比Vim更大,更加融入我們的日常生活。@李楠老師您可以試試在OS X下所有文本框里用Emacs的keybinding移動和操作文本。這比Gmail和知乎的jk上下移動功能要更加universal一些。因為這些場景里是完全不需要Vim的「模式」的。

最常見的幾個:

  • Ctrl - P Previous
  • Ctrl - N Next
  • Ctrl - A Start of line
  • Ctrl - E End of line
  • Ctrl - K Delete to end of line
  • Ctrl - F Move forward
  • Ctrl - B Move backward

說到這,我覺得Windows的一大敗筆就是,Win鍵在Windows 98年代之前就已經有了,但是微軟除了少數幾個系統級別的操作(鎖屏,打開運行)以外,一直沒有賦予這個鍵更多的功能,也沒有相應的設計指導。平常用筆記本鍵盤及Happy Hacking Keybord比較多,移動游標基本上都是靠Emacs key binding, 在Windows下就非常的痛苦。我總在想如果Windows下Win - T 新建Tab, Win - W 關閉Tab, 然後Ctrl跟OS X及Linux一樣是用來移動游標的該多好!

如果你問Emacs和Vim從設計上「誰更牛」,我還是認為Emacs更牛,雖然大體上我是一個Vim用戶。因為Emacs下就連「前進一個字元」這種基本操作,其實都是執行了一個類似forward-one-character的函數。當時了解到這一點,還是挺震撼的。換句話說Emacs第一是幾乎所有操作都是可編程的,二是elisp相比vimscript是更加強大的語言。

如果你是想找一個跨平台的文本編輯器,我推薦Vim, 因為不管是Linux server的terminal, 還是Windows下的gVim, 還是OS X下的MacVim, 用Dropbox和Vundle同步了配置和插件後,都可以獲得幾乎完全一致的體驗。

如果你的主要平台是OS X或者Linux. 我不會推薦Emacs作為你的主要編輯器,而是推薦你努力掌握Emacs的keybinding. 因為這套keybinding在幾乎所有的「文本編輯」場景里都是適用的。不管你是寫iOS App, 還是在PyCharm里開發Python, 或者是在TextMate下編輯配置文件。非常爽的一件事情。

我現在在Windows下用Eclipse之類的就很痛苦,還得去記憶[Eclipse里刪除一行的快捷鍵」這種玩意。


其實很容想到,使用emacs的人是對編輯器很較真兒的,對VIM肯定是沒少研究的,之後轉移到emacs;但是對於使用VIM的,有多少人能夠耐心學習emacs呢。自然是使用emacs的人得出的結論更客觀一些。其實我也覺得emacs的宣傳有一點比較失敗,什麼煮咖啡啊,打遊戲啊什麼的,坦白講使用emacs的人還真的是很少有人使用emacs做這些事情,最後說一句就是emacs可以定製,一直到屬於你的身體的一部分


就是兩個編輯器而已其實沒什麼高深的。這麼多爭論主要是管理人員給工程師安排的任務不夠飽滿。

個人不喜歡和稀泥。所以可以很直接的說,我更欣賞 vim 的哲學 :

  • 不僅僅工具,人也需要提升自己來配合工具,從而真正達到人劍合一的高效。

  • 更少事前準備和模式化,用最基本的功能組合解決多樣而且變化的問題。
  • 需要用理性克制慾望,把解決方案節制在最優的適用範圍內。

Emacs 在我看來是大而無當,理性敗給慾望的典型。時間也已經給了答案,今天還有幾個人「生活在 Emacs 中」

而今天我們在 Mac ,HP-Unix 上仍然不時用到 vim ,甚至,在瀏覽 github 或者 知乎閱讀 的時侯,也可以 jk 換行。

vim 還在我們的生活中


我兩個都用過, 不過都不是高手, 就推薦一篇文章吧Emacs和Vim:神的編輯器和編輯器之神

文章較長, 濃縮下裡面的主要觀點

Emacs是神的編輯器: 因為神是萬能的, 所以用的編輯器也是萬能的, 而Emacs就是萬能的編輯器, 他可以完成一切你想要的功能, 當然, 想要另類的功能還是不簡單的

vim是編輯器之神: 雖說Emacs可以完成的功能vim基本上也可以完成, 但終究不如Emacs, 但在純粹的文本編輯方面, vim卻是真正的神

本人從vim轉到Emacs再轉到vim, 之所以放棄Emacs的原因在於, 我並不需要那麼強大的擴展功能, 並且Emacs的快捷鍵實在太累了, 配置真的是太難配了, 不過Emacs自帶的Eshell很不錯, 省了裝一個windows下的第三方CMD,另吐槽下, win下的vim實在太丑了

==========================================================

貌似不小心忘了題主問的是誰更牛逼, 所以, 對於這樣一個網上幾十年的月經貼, 再加上我明知道是月經貼還非要過來湊熱鬧的人告訴你, 雙方口水站已經打了無數年都沒有勝負, 你覺得一個帖子就得出結果?


只說一點

在vs,eclipse,intellij idea, xcode等主流IDE中,在Firefox,Chrome,Safari等瀏覽器都有vim插件,可以享受這些應用強大功能的同時獲得極速的編輯體驗.但是emacs就難以脫離原有環境遷移了.

@吳金鏑 說的key binding很有道理,不過這個key binding只是emacs全部強大功能中很小的一部分,我用一些系統全局熱鍵軟體都可以模擬出來.

一般爭論中說的IDE/Vim/Emacs不可兼得,在我看來不存在.我在常用IDE中使用vim插件編輯文本,使用IDE其他功能編程.採取了兩者共同的優點,而Emacs,我還不知道怎麼結合利用.

所以我覺得,Emacs很強大,但是廉頗老矣,而Vim則是藉助插件形式,嫁接宿主,老樹發新春


貌似Emacs更強一點,儘管我是Vim粉

歸根到底是一個風格的問題,兩編輯器風格迥異,擇其一即可


我覺著一個對vim有過一定的使用經歷的, 對emacs有一定了解的人。應該是能夠承認emacs 比 vimv要牛逼的。


紅色和黃色哪個更好看?


emacs和vi之戰永無休止的根本原因是這兩個編輯器:

1. 學習成本都很高

2. 使用習慣迥異

3. 上手後都非常好用

所以很少有人精通兩種編輯器,所以屁股決定腦袋, 所以endless war continue...


哪個牛,關鍵是看誰在用它。牛人用的自然牛


這種問題還是不要問了,會引發聖戰的. 而且你根本不可能得到客觀的評價,因為都是 Vim 用戶說 Vim 好, emacs 用戶說 emacs 好, 各執一詞.而兩者都使用人的早就被燒死了.


堅定不移地用emacs


沒用過Emacs,Vim很順手。這個問題本來就沒標準答案。

其實我覺得,就單單是編輯效率來說,Vim應該是在Emacs之上的,畢竟多模式是優勢。但在擴展性上面,貌似Emacs佔優。畢竟他不僅僅是編輯器吧,是一個lisp的解析器。

--

&> p.s. 以後悠閑了看lisp的話,我倒是很願意學學Emacs的


推薦閱讀:

如何使用Notepad++和GCC搭建Windows下的C語言學習環境?
為什麼 vim 在 insert 模式下粘貼大量文本時會崩潰?
你對 Neovim 怎麼看?
如何用 vim 的插件開發?有什麼實際中的技巧?
如何使用 Vim ?

TAG:文本編輯器 | Vim | Emacs |