Vim Vs Emacs

Vim編輯器使用了大概有三年的時(shí)間,emacs呢則是最近幾天才嘗試的竟秫,之所以會(huì)嘗試emacs民泵,第一點(diǎn)是因?yàn)榭戳瞬簧贂筒┛投荚谡flisp如何如何好;第二點(diǎn)則是因?yàn)榻诔霈F(xiàn)了廣受好評的spacemacs項(xiàng)目扣墩,這個(gè)項(xiàng)目可以說開箱即用,而且使用了最接近vim的evil包扛吞,據(jù)說這個(gè)包還原了百分之80以上的vim功能呻惕,是所有的試圖模擬vim模式的嘗試中做得最好。

這就很明顯滥比,spacemacs這個(gè)項(xiàng)目會(huì)拉攏一部分Vim用戶亚脆,的確,它成功地吸引了我的注意力盲泛,我早就想試下這個(gè)“操作系統(tǒng)"是如何牛逼濒持。

下面我單純的從用戶的角度來比較兩者,對比非常淺寺滚。

包管理

對于一直用慣了vim簡陋的包管理的我柑营,一看到emacs的包管理,的確有點(diǎn)驚艷到我村视。

在emacs中官套,只需要點(diǎn)擊菜單的Options->Manage Emacs Packages,既能打開emacs的包管理器蚁孔,打開包管理器之后奶赔,可以搜索,可以安裝杠氢,可以訪問主頁站刑,多么友好的用戶體驗(yàn),跟Vim真是天差地別鼻百。

emacs包管理器
安裝窗口

由于各種原因绞旅,在天朝下載可能很慢质况,但用戶可以更換鏡像源,就像linux上apt玻靡,yum和macOS上的HomeBrew一樣结榄,有個(gè)官方的服務(wù)器專門存放這些包,而且世界各地也有志愿同步官方的鏡像源囤捻。

以上只是新用戶的我的體驗(yàn)而已臼朗,然而通過閱讀一些資料之后,我們發(fā)現(xiàn)其實(shí)emacs也是長期沒有自帶的包管理器的蝎土,在emacs 23的時(shí)代出現(xiàn)了一個(gè)非官方的包管理:packages.el视哑。后來到了emacs 24才被集成到里面去。

另外還要說下這貨的更新其實(shí)非常麻煩誊涯,首先要進(jìn)入package-list-packages然后在需要更新的包標(biāo)記為需要更新挡毅,問題在于Package-list-packages是列出所有的包,包括了沒有安裝的暴构,意味著你要標(biāo)記其實(shí)非常麻煩...

現(xiàn)在來看vim的包管理跪呈,實(shí)際上vim根本沒有包管理,我們來談下vim的包管理發(fā)展史取逾。

  • 最開始的時(shí)候耗绿,用戶必須把每個(gè)插件不同文件手動(dòng)放在指定的目錄上

  • 后來出現(xiàn)一種壓縮格式,用戶只需要在vim中執(zhí)行:so xxx.sz就可以自動(dòng)將包釋放到對應(yīng)的目錄砾隅,

  • tpope大神橫空創(chuàng)造出了vim-pathogen误阻,這個(gè)時(shí)候用戶再也不需要將一個(gè)包里面不同文件放在不同文件夾里面了,一個(gè)包就是一個(gè)文件夾晴埂,結(jié)合github和git-submodule究反,我們就可以在線下載更新了,但是一開始github還沒火儒洛,絕大部分開發(fā)者將包提交到Vim官網(wǎng)上而非github上精耐,后來出現(xiàn)了一個(gè)用戶vim-scripts將官網(wǎng)大部分插件上傳到github上,從此開始晶丘,pathogen才真正活起來黍氮,同時(shí)隨著github的流行唐含,越來越多作者將插件放到github上來管理浅浮,到現(xiàn)在vim-scripts已經(jīng)功成身退了。

  • Vundle捷枯,用戶不在需要通過git-submodule來在線更新了滚秩,只需要在配置文件加入簡單命令即可窗口化管理插件。很多小白用戶都是從這個(gè)插件開始的淮捆。

  • vim-plug郁油,可以說目前最受歡迎的包管理器除了實(shí)現(xiàn)Vundle的功能之外本股,還有兩個(gè)個(gè)殺手級別的功能就是lazzy load和多線程異步更新,特別是前者的出現(xiàn)讓vim的包管理一段時(shí)間內(nèi)超過emacs的桐腌,用戶可以根據(jù)文件類型拄显,動(dòng)作命令來選擇什么時(shí)候加載,用戶可以決定下載包之后的動(dòng)作是什么案站,還可以指定git倉庫的tab和分支躬审。

  • 其它。dein.vim和vim-plug不相上下蟆盐,甚至更好承边。neobundle.vim同樣是由Shougo大神寫的,同樣優(yōu)秀不過是他寫的上一代產(chǎn)品石挂,還是推薦dein.vim博助。

emacs默認(rèn)的包管理的話,還有一個(gè)有點(diǎn)痹愚,就是自動(dòng)解決依賴富岳,這對vim來說是不太可能的,因?yàn)関im的插件是散戶自己弄的拯腮,沒有官方的組織城瞎,只能靠用戶自己注意依賴問題,好在vim的依賴很少疾瓮,emacs的自帶的包管理有個(gè)缺點(diǎn)就是無法lazzy load而且需要用戶自己寫腳本維護(hù)自己的插件列表已經(jīng)安裝和更新脖镀,只要你把包安裝了除非你包刪除掉否則無法不加載,后來出現(xiàn)use-Packages才解決了這個(gè)問題狼电。

總結(jié):vim由于先天原因找包比較困難蜒灰,但是找到之后維護(hù)起來比emacs簡單得多。

補(bǔ)全

編輯器中所有功能中大概大家最關(guān)心的就是這個(gè)功能吧肩碟,emacs有一個(gè)company包以及相關(guān)的補(bǔ)全包强窖,但就company包來說就挺不錯(cuò)的,能補(bǔ)全路徑打開buffer中的單詞以及elip的函數(shù)變量等等削祈,要是開發(fā)elip就這個(gè)包就夠了翅溺,可惜,號稱操作系統(tǒng)的emacs仍然無法很好解決高級編程語言的補(bǔ)全問題髓抑,以前的emacs也和vim一樣使用ctags和cscope來進(jìn)行補(bǔ)全跳轉(zhuǎn)咙崎,后來谷歌大神Valloric為vim創(chuàng)造出驚天插件youcompleteme,真正意義做到語義級別的補(bǔ)全吨拍,后來大神將這個(gè)插件的服務(wù)端ycmd統(tǒng)一接口褪猛,讓更多的編輯器可以使用ycm,所以你現(xiàn)在去搜如果要做到語義級別的補(bǔ)全羹饰,會(huì)得到和vim一樣的結(jié)果伊滋,那就是使用ycm碳却。

vim的話,如果使用了ycm的話笑旺,vim script本身的補(bǔ)全反而找不到較好的方案呢昼浦,各位知道怎么弄?

shell或者終端模擬器

我現(xiàn)在的vim的配置是:vim+vimshell筒主,而neovim則是用自帶的終端模擬器座柱,neovim的終端模擬器絲滑般好用。

emacs的有自帶的用elisp寫的eshell物舒,類似vimshell的地位色洞,說實(shí)話,這個(gè)eshell難配置冠胯,難用火诸,而且慢,經(jīng)耻欤卡置蜀,使用體驗(yàn)輸給vimshell。

emacs當(dāng)然也有終端模擬器悉盆,可惜打開之后盡是亂碼盯荤,當(dāng)然這可能和我使用zsh+oh-my-zsh有關(guān)。

在這一點(diǎn)上vim獲勝了焕盟。

搜索定位

補(bǔ)全那一小節(jié)有一些沒說秋秤,似乎用emacs的人不喜歡fuzzy complete或者fuzzy search,我用company的補(bǔ)全真的很難習(xí)慣脚翘。什么是fuzzy請看下面的動(dòng)圖:

ycm
ycm

在搜索方面灼卢,vim最著名的插件就是ctrlp.vim,也就是Fuzzy file, buffer, mru, tag, etc finder来农,配合the_siliver_searcher搜索速度真是無人能敵鞋真,在搜索linux源碼的時(shí)候也是秒開,最重要的是fuzzy這個(gè)特性在茫茫的文件中沃于,這是找到文件最佳途徑涩咖,而那些emacser貌似很少用這些特性。

另外的ctrlp的一個(gè)擴(kuò)展也非常牛逼繁莹,那就是ctrlp-funky檩互,就是用ctrlp的接口列出當(dāng)前文件的函數(shù),然后用戶可以fuzzy定位到該位置蒋困,有了這個(gè)插件之后盾似,我基本就不用tagbar之類的插件了敬辣。

emacs也有一個(gè)imenu雪标,但是支持的語言類型太少和ctrlp-funky沒得比零院,后者支持三十多種語言。

當(dāng)然村刨,emacs在文本搜索中有一個(gè)優(yōu)勢就是實(shí)時(shí)顯示告抄,這一點(diǎn)貌似還么有vim插件實(shí)現(xiàn)過。

其它優(yōu)秀插件

vim-multiple-curosr這個(gè)功能是在st編輯器首先出現(xiàn)嵌牺,出現(xiàn)不久之后就有vim插件了打洼,而且做得非常不錯(cuò)而且可以結(jié)合全局搜索插件進(jìn)行替換,非常方便逆粹,可以看我的這篇文章vim重構(gòu)插件PK募疮。

emacs也有當(dāng)卻和evil不能和諧共處,至今沒有找到體驗(yàn)和上面的vim-multiple-curosr一致的包僻弹。

vim-multiple-curosr
vim-multiple-curosr

vim-easymotion阿浓,超級強(qiáng)大的光標(biāo)定位插件,甚至可以在多窗口中定位蹋绽,evil系列中也實(shí)現(xiàn)了一個(gè)可惜功能上和用戶體驗(yàn)差太多了芭毙,比如它沒有行模式,不可以多窗口卸耘。

vim-easymotion
vim-easymotion

magit & vim-fugitive

emacs上的magit包體驗(yàn)真的很不錯(cuò)退敦,涵蓋了大部分git命令,git有很多命令很難記住蚣抗,但magit的幫助非常給力侈百,通常是兩個(gè)字母的組合按鍵,按下前一個(gè)字母之后出現(xiàn)窗口提示下一步能做什么翰铡。

相比之下设哗,vim-fugitive就相對簡陋些不過夠用,一個(gè)git status窗口下也能完成很多操作两蟀。

lisp

第一次認(rèn)識lisp网梢,是從它的數(shù)學(xué)表達(dá)式開始,然后它竟然是逆波蘭式的赂毯,果然名副其實(shí)的古老編程語言战虏,瞬間好感提升。

然后寫lisp需要寫大量的括號党涕,所以好像因此出現(xiàn)一種paredit的編輯模式烦感,減少因?yàn)槔ㄌ柼鄬?dǎo)致的錯(cuò)誤,看了視頻介紹覺得很好用膛堤,特別適合lisp和html這樣的語言手趣。

當(dāng)然我對lisp的認(rèn)識只建立在一兩個(gè)視頻上,所以不敢多少。

org-mode

好吧绿渣,我還沒有嘗試過這貨朝群,因?yàn)槲铱吹哪且曨l那位大神說他弄了幾個(gè)月才熟悉。但我大概知道他的作用:todo list & gtd & note ;

這樣的工具非常多了中符,我不覺得在編輯上面弄這些是個(gè)好的選擇姜胖。

所謂的操作系統(tǒng)

  • 聽歌什么的
  • 收發(fā)郵件
  • twitter & 微博
  • ...

只要命令行可以做到的,都可以集成到vim & neovim上淀散,實(shí)際的確有右莱。

浮云。

總結(jié)

程序員的編輯器的要求就是:

  • 快速編輯
  • 文件定位
  • 補(bǔ)全跳轉(zhuǎn)
  • 搜索替換

除此之外都是浮云档插,在編輯器方面emacs永遠(yuǎn)輸給vim慢蜓。

最后貼上我的vim配置是:t-vim

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市郭膛,隨后出現(xiàn)的幾起案子胀瞪,更是在濱河造成了極大的恐慌,老刑警劉巖饲鄙,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凄诞,死亡現(xiàn)場離奇詭異,居然都是意外死亡忍级,警方通過查閱死者的電腦和手機(jī)帆谍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轴咱,“玉大人汛蝙,你說我怎么就攤上這事∑臃危” “怎么了窖剑?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戈稿。 經(jīng)常有香客問我西土,道長,這世上最難降的妖魔是什么鞍盗? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任需了,我火速辦了婚禮,結(jié)果婚禮上般甲,老公的妹妹穿的比我還像新娘肋乍。我一直安慰自己,他們只是感情好敷存,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布墓造。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪觅闽。 梳的紋絲不亂的頭發(fā)上帝雇,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音谱煤,去河邊找鬼摊求。 笑死禽拔,一個(gè)胖子當(dāng)著我的面吹牛刘离,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播睹栖,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼硫惕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了野来?” 一聲冷哼從身側(cè)響起恼除,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎曼氛,沒想到半個(gè)月后豁辉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舀患,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年徽级,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聊浅。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡餐抢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出低匙,到底是詐尸還是另有隱情旷痕,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布顽冶,位于F島的核電站欺抗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏强重。R本人自食惡果不足惜佩迟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望竿屹。 院中可真熱鬧报强,春花似錦、人聲如沸拱燃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至召嘶,卻和暖如春父晶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弄跌。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工甲喝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铛只。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓埠胖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淳玩。 傳聞我的和親對象是個(gè)殘疾皇子直撤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 教程存檔Github 序|Preface 先來一篇有趣的簡介:Emacs和Vim:神的編輯器和編輯器之神 - 51...
    北魏企鵝閱讀 137,715評論 18 224
  • 作者 謝恩銘承匣,公眾號「程序員聯(lián)盟」(微信號:coderhub)蓖乘。轉(zhuǎn)載請注明出處。原文:http://www.jia...
    程序員聯(lián)盟閱讀 58,177評論 44 177
  • macvim配置 最終效果如下: 系統(tǒng)環(huán)境 macos10.12.4 homebrew1.2.1 python3....
    Like_eb56閱讀 69,305評論 5 65
  • 深夜韧骗,靜靜閉上眼睛嘉抒,深深呼吸,將昨日的煩惱一并呼出宽闲。 生活如晚霞一般众眨,需要色彩的渲染,才不會(huì)枯燥無色容诬。 強(qiáng)者遇到困...
    風(fēng)箏夕汐閱讀 247評論 1 1
  • 今天是高考開始的日子娩梨,朋友圈都在刷屏,看著看著遙遠(yuǎn)熟悉的記憶回來了览徒! 二十年前啦將近我的高考狈定,哈哈想起來滿是心酸的...
    平凡精靈閱讀 238評論 0 0