為什麼Emacs可以插入並顯示圖片而Vim不能?

用Emacs的OrgMode記筆記時, 可以插入並顯示圖片, 就如同OneNote一樣.

於是出於好奇地問一下, 為何其它的常見編輯器(比如Vim)卻不能呢?

試想探討性地問一下,是什麼架構本質上的區別導致了這個不同? 以及是什麼能讓Emacs這個文本編輯器的窗口能顯示圖片, 而Vim, TextMate, Sublime Text等不能.


看了下emacs的release notes,圖片支持是2001年發布的21.1里引入的。這個版本還支持不同寬度的字元和不同的行高,所以應該是重寫了buffer渲染的部分,這就是和vim根本的不同了。vim的字元都是同一個寬度,行高也一樣。vim或者其他編輯器想支持這個,同樣也是改下buffer渲染部分就行了,不難實現。

和lisp更沒關係了,vim可以用python和ruby的,但沒有那種基礎設施,什麼語言都救不了。

然後說下emacs-webkit。從頁面上給的原理圖看,是用PyQT開了個webkit窗口,讓它對齊並跟隨emacs里的一個window,emacs和python間通過EPC(emacs的rpc機制)通訊。就是個外掛…… vim也可以這樣實現。實話說這種做法……

現在開發一個編輯器,想嵌入一個webkit,是相當容易了。Qt、QML、Gtk都有現成的控制項。不用控制項自己合成也不難,文本排版之類的pango都給你做好了,繪圖有cairo、skia。

我之前寫過的一個編輯器也試過嵌個webkit(my-editor-gl/webkit.lua at master · reusee/my-editor-gl · GitHub ),但日常使用還是用著chrome、firefox,因為並沒有什麼特別的優勢,僅僅是窗口位置不同而已,擴展功能還要自己搞。

vim和emacs強大,是因為社區積累多。但基礎架構上實在跟不上時代,gui、並發等等,老態龍鍾。


技術方面,emacs的buffer數據結構和渲染更複雜,支持變寬字體以及同一buffer同時顯示不同字體和不同大小的字體,還有圖片,其實是做了一些類似word的工作,這樣導致其渲染引擎代碼很複雜,據說熟悉這部分代碼的人很少。

這是emacs的設計目的,做更多的事情。

而vim的設計目的是專註於文字處理的高效和靈活,根本沒考慮圖片那些東西,專註文本處理,精益求精,所以才有這樣的地位。

emacs已經太複雜了,攤子太大,加一個功能需要顧及其他所有的功能,這樣開發起來需要更多工作量,需要更大的團隊。比如並發遲遲加不進去,因為跟現有架構和代碼衝突。

不過,個人更喜歡emacs的設計哲學,就是實現起來太難了,emacs目前的實現架構和代碼還遠不夠完美。


因為VIM的定位是編輯器。

Emacs的定位是編輯器外觀的操作系統。


emacs 是個操作系統,多功能方面自然好過 vim

------------------------------------------

似乎 RMS 當年說他是想把 emacs 做成可視化文檔編輯器的


有啥用?


我記得有個在emacs了裡面調用webkit的項目... 如果做的好的話, emacs裡面看html5視頻沒準兒都行... 當然, 我沒有試過, 有興趣的可以自行測試一下. (圖片來自emacswiki...)

EmacsWiki: Web Kit


因為插件語言不一樣吧。

其實插入圖片功能,如果不涉及排版的話,什麼編輯器都很簡單

但是要正確排版就麻煩了,需要專門寫排版的程序

emacs用的中間層語言lisp是全能語言,界面都是lisp控制的,可以直接用腳本進行排版和調試

vim底層用的c,腳本是按鍵序列和調用外部程序,做字元串方面的處理還可以

界面是C寫死的,只能通過命令行和外界溝通

做其他的界面擴展,擴展性不好

有點類似IE和firefox的關係。後者連界面都是用腳本語言設定的,所以可以自由調整,IE的擴展功能相對就少很多


真正見識過org-mode的人並不會認同只做好一件事的哲學。


vim可以顯示xpm格式圖片,基本屬於殘廢。

主要原因如其他答案所說,Emacs是Elisp的解釋器,GUI框架也比vim高級(印象中是這樣)。

另外,題主不知道不代表不可以,sublime是可以顯示圖片的,謝謝。


Vim就是為了搞文本而已,只做一件事並且做好


因為emacs本質上就是個lisp解釋器,理論上你可以用lisp實現任何你想要的功能。而vim僅僅是一個強大的編輯器。


推薦閱讀:

為什麼一些文本編輯器(Sublime Text2、EditPlus、VIM)可以取代eclipse、myeclipse 等 IDE?當開發一個大項目時,IDE 可以自動生成項目結構和一些複雜的配置文件,如何用文本編輯器組織一個大項目呢?
Mac 上最好的 Markdown 文本編輯器是什麼?
大量寫Lua用什麼編輯器最好?
除了excel還有什麼編輯器能快速輸入等差數列?
vim/gvim 有哪些實用技巧?

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