既然之前說過要寫我怎么繼續折騰Emacs的,過了一個星期這里就是第二篇了,突然覺得我把blog這樣分節不是很好,每次可能要湊一些東西才有該有的篇幅,而且說的東西可能東一點西一點,這樣一篇看下來不利於檢索,所以這一篇過后會按主題來寫,不再用原來的形式,有一點寫一點,每次圍繞一個主題來,這樣比較好閱讀一些.
今天寫一些Emacs我剛入門遇到的困難,這里我拿目前很流行的sublime來與emacs做一個比較,看看emacs到底有哪些難處讓人很難上手:
Sublime text
首先介紹下sublime text, 這個編輯器最近極為流行,也確實非常的好用,別的不說,從默認安裝過后就會發現這個作者還是非常懂碼農的,默認的配色就是molokai,雖然有些人不太喜歡這個配色,不過從vim的插件數量統計上就可以看到它有多么的流行.(當然我們的emacs如此的強大,區區一個配色方案還是有的.)一般來說寫代碼的話大部分人還是喜好偏暗的配色,比較不傷眼,而且顏色比較容易分辨.另外我們從圖上也能看出來,sublime默認就有左邊的一個小型的文件管理器(或者說project瀏覽器),默認就有行號,右邊有代碼地圖,上面有tab,而這些都是默認配置!!不要小看默認配置,ruby on rails的一條最重要的原則就是約定大於配置,默認就把所有事情做好這一點太重要了,多少人想學emacs結果連鍵位都還不熟還得天天看着80年代機器一樣的界面,打開配置文件以后又是"完全無法理解"的語言,就這樣放棄了emacs.

相對於sublime text來說emacs缺少一個好的插件管理系統
這個問題在emacs24版終於被部分解決了,之前一篇也提到過這個問題,現在有了melpa這個和github社區力量結合的東西,寫一個插件並發布變得十分簡單,而且插件可以保持更新,這一點我覺得emacs已經做的不錯了,也正是因為emacs開發者不斷的努力,才使得emacs user還是不斷有新人來學習和使用.今年來lisp方言的流行(比如我就是為了寫clojure才用emacs的),各種小眾語言沒有IDE的支持,語言作者往往都傾向於先寫一個emacs的mode來使用,clojure-mode至今仍是眾多開發人員的首選clojure編輯環境,所有的lisp方言基本都是這么個狀況.而且最近已經廣泛普及的python和ruby在emacs上相應的插件都功能非常強大,比如python-mode我覺得使用熟悉以后效率比原來用pycharm還高.

說了半天好像在說emacs的好話,可能也是我近期都比較傾心於emacs的緣故.在插件系統上emacs的缺點是emacs lisp實在學習成本比sublime用python做插件來的高一些.這樣將許多想按自己設想做插件的人拒之門外,不過我覺得相對於emacs如此高的學習成本來說emacs lisp反倒不應該是一個障礙,lisp我認為作為一個想提升自己的程序員都應該學習一下,就算知道一點皮毛最起碼也拓寬了您的眼界不是?
emacs的插件群很大,而且不斷有新的插件加入進來,上圖是我接觸了一點時間安裝的一些插件,另外透露一下按我上一篇博客設置了源以后你就可以看到有1400多個插件可以安裝啦.這在所有編輯器中應該是最多的了吧.
emacs的鍵位設置
這是我面臨的很大的問題,特別是由於從vim轉過來的,經常會打着打着突然ESC+hjkl,其實論純文本編輯效率來說vim確實比emacs強.但是emacs這個東西更加適用於寫,就是將腦中的內容敲入屏幕中這個過程.但不得不說是一個非常大的問題,我分一些點說,這塊實在非常想吐槽.
上下左右移動
習慣了vim的人會覺得我這輩子在文本編輯器里面再也不用按上下左右四個鍵了,我甚至覺得相對於emacs user來說vim user更加適合HHKB這個神器,反正我最近自己還是買了realforce 104(不過也有點打游戲的因素在里面,有些游戲沒有小鍵盤不好打).
我們來看看emacs的上下左右: 上 -> Ctrl+p(revious) 下-> Ctrl+n(ext) 左-> Ctrl+f(orward) 右->Ctrl+b(ack) ,讓人無比的蛋疼有沒有?雖然可以配置,但是有沒有想過其他綁定在上面的健怎么辦?我到現在還是覺得這么按非常難受,就算把Capslock改成了Ctrl依舊讓小拇指的工作強度大大增加.解決方法是可以裝個Evil插件,模擬vim用,我現在暫時還不想這么干.目前我又用回了上下左右+鼠標,只有大概一半的時間會用Ctrl+pnfb吧,我發現Meta+pnfb還是比較好用的,但也不是很經常用.到時Ctrl+a移到行首和Ctrl+e移到行尾個人認為比vim的0和$強一些.
打開保存文件
emacs的打開文件對新手簡直就是惡夢:輸入文件路徑打開文件!你可以想像一個新手層層輸入文件的絕對路徑只為編輯一個文件心中有多郁悶么?而且不像gvim尚且提供給你一個windows風格的打開文件對話框來讓你找文件,就算點菜單你也只能老老實實地輸入路徑,而且打開文件的快捷鍵也很囧Ctrl+x Ctrl+f (以后我還是按官方的規范寫法C-x C-f來寫了).您就不能跟別的軟件通用一下么?不過emacs為了考慮通用性沒有加入mac上的cmd鍵和windows上的win鍵,我以后另開一篇寫emacs的無傷按鍵配置好了.
保存文件的快捷鍵是C-x C-s,其實大概用個十幾回也差不多熟悉了.
按行操作
vim有dd , yy,J等極為方便的操作,我個人反正已經離不開了,emacs的習慣有些不太一樣,這些操作在emacs沒有等價的快捷鍵,我只是列一下我的方式
dd刪除一行:我一般是用C-a移到行首,然后C-k C-k刪除一行的,按鍵比較繁瑣,但是也湊合了
p粘貼回來,這個emacs里面用C-y(ank)
J連接2行,這個要先C-n移到下一行,然后M-^連接到上一行(Emacs的join是將本行與上一行連接,所以要先下一行)
吐槽了半天其實也沒用,我今后盡量摸索和學習出來一套更加合理的按鍵配置再推薦給大家.
Emacs的配置保存
之前用vim也有這個問題,如果換了一台機器,想讓vim重新回到適應的狀態需要很長時間的配置,需要把插件什么的裝回來,總之就是各種麻煩.而如果我用sublime呢?直接用就可以了,sublime很好的初始配置基本做到了開箱即用,而emacs想要下一個安裝文件就開始用,我覺得還不如開記事本.這個問題曾經讓我屢次受挫,總是找不到一個好的方案.出現了網盤這個東西以后,可以把配置文件存一份網盤備用,但是你只要升級一下或者更新一遍就需要重新放到網盤里面.更何況如果你用U盤的話會面臨丟失的問題.
直到現在,我終於找到了一個解決方案,它就是git.雖然git嚴格來說就是一個版本管理工具,但是它確實是一個保存配置非常好的方案,我把我的配置文件放到了github上,不過只是作為自己快速讓自己的emacs進入工作狀態,沒有什么參考價值,地址在這里 ,大家要學習emacs配置的話我覺得steve purcell的配置 應該是在地球上能找到的最好的配置了,其實就直接拿他的配置替代emacs starter kit我覺得也非常好.另外DEA 也是emacs中文網的一個作者的非常完備的配置.
要使用git來備份自己的emacs配置首先要會用git,這里容我強烈推薦一個軟件SourceTree,一個免費的版本控制客戶端,我覺得在還不熟git命令行的情況下可以用它,雖然要求注冊atlassian賬號,但是軟件是免費的.git的基本操作我也不詳細說了,這里寫一下我的gitignore,大家可以結合別人的gitignore來防止git把一些沒什么用的東西上傳上去.
1 .smex-items 2 /auto-save-list 3 /backups 4 .DS_Store 5 places 6 /url/cookies 7 *.elc 8 *.el#
其實還是非常不完備,以后我的github上也會不斷更新
就這些吧,雖然還有很多要寫的,留到以后分主題來寫了.也容我多折騰一段時間積累些經驗.
