配置使用emacs也有一段時(shí)間了淮摔,隨著插件的增加和對(duì)emacs的更深入理解归敬,有必要對(duì)現(xiàn)在的配置做一個(gè)更新了简十。
先說說問題:
目前插件與依賴關(guān)系很混亂烁设,都集中在.emacs這個(gè)文件中刃泌,需要整理
目前對(duì)于跨平臺(tái)的支持不是很好,只有最大化函數(shù)署尤,以及工作目錄設(shè)置做了跨平臺(tái)
目前對(duì)于插件的整理不是很好耙替,插件有放在elpa中的,也有放在plugin中的
一些插件配置了曹体,但是未生效或者與其他插件的快捷鍵沖突俗扇。如:hlem, smex等等。
整理準(zhǔn)則
依賴單一化
插件集中化
去平臺(tái)化
具體解釋下:
什么是依賴單一化箕别,即一個(gè)插件需要有一個(gè)插件的init_xxx.el文件铜幽,里面用于做該插件的相關(guān)配置滞谢。
什么是插件集中化,這個(gè)首先針對(duì)的是emacs24以上的版本除抛。通過package包管理器對(duì)插件進(jìn)行管理狮杨,分為三大類插件:功能性插件(如:主題顯示,hlem到忽,smex)橄教,UI類插件(如:主題包,tabbar-mode)喘漏,模式類插件(如:php-mode, web-mode)护蝶。
去平臺(tái)化,顧名思義翩迈,可以在mac持灰,linux, windows下運(yùn)行。 因?yàn)閜ackage中安裝的包絕大多數(shù)都是支持各個(gè)平臺(tái)的负饲,所以唯一需要做區(qū)分的堤魁,就是自己用emacs lisp實(shí)現(xiàn)的一些代碼,以及對(duì)工作環(huán)境的私人定制等等返十。
Ok, 廢話說了不少了姨涡,直接上步驟。
安裝
關(guān)于這個(gè)不在贅述吧慢,各位看官可以看上一篇博文或者自行g(shù)oogle涛漂。
此處唯一需要注意的點(diǎn),就是.emacs, .emacs.d 文件與目錄所在的路徑检诗,以及~所代表的路徑是什么匈仗。(恩,主要是針對(duì)windows)逢慌。
引用規(guī)則設(shè)定
首先悠轩,在.emacs中,引入一行代碼:
至此攻泼,關(guān)于.emacs的文件更改就已經(jīng)結(jié)束火架,剩下的就需要在init.el文件中完成。
在init.el中忙菠,只load所需模塊或者插件的init-xxx.el文件何鸡,不做任何配置或者設(shè)置,配置與設(shè)置牛欢,均在init-xxx.el文件中處理骡男。
包管理器
emacs的特色就是豐富的插件,而emacs24版本之前傍睹,需要依賴第三方插件和el-get來下載各種插件隔盛,或者自己下載插件的源碼進(jìn)行編譯犹菱,安裝或者直接配置。而emacs24集成了包管理器吮炕,只需要M-x package-install腊脱,然后輸入所需的包名即可。(那個(gè)誰龙亲,說sublime有包管理器而emacs沒有的陕凹,速速去領(lǐng)50大板。題外話俱笛,sublime的package manager還需要先進(jìn)行安裝,而非集成传趾。)
當(dāng)然迎膜,因?yàn)榈赜蛞约疤斐颍恍┵Y源包的獲取不是非常方便浆兰,所以此處我們需要配置下包管理器的下載源磕仅。代碼如下:
基本配置
最初的emacs帶有菜單欄,滾動(dòng)條簸呈,以及工具欄等等榕订,而且一打開的時(shí)候也不是最大化,和以前的習(xí)慣還是有較大出入的蜕便,怎么辦呢劫恒?莫慌,基本配置修改下即可:
;;不顯示工具欄
(tool-bar-mode 0)
;;不現(xiàn)實(shí)菜單欄
(menu-bar-mode 0)
;;不顯示滾動(dòng)條
(scroll-bar-mode 0)
;;顯示行號(hào)與列號(hào)
(global-linum-mode 1)
(column-number-mode 1)
;;關(guān)閉啟動(dòng)動(dòng)畫
(setq inhibit-startup-message 1)
;;設(shè)置初始工作目錄
(if (string-equal system-type "windows-nt")
(setq default-directory "G:\\projects")
(setq default-directory "~/work"))
;;設(shè)置問答提示為 y-or-n,而不是yes-or-no
(fset 'yes-or-no-p 'y-or-n-p)
;;不生成備份文件轿腺,即 xxx.xx~ 類文件
(setq make-backup-files nil)
插件
- ido
ido 插件用于在mini buffer中顯示最近使用的命令或者文件两嘴,與smex, hlem的功能類似,不過打開文件時(shí)族壳,個(gè)人比較習(xí)慣 ido憔辫。
emacs內(nèi)置ido,要開啟這個(gè)模式仿荆,只需要:
(ido-mode 1)
- wakatime
wakatime 是用來統(tǒng)計(jì)編程時(shí)間以及使用的編程語言的贰您,支持的編輯器和IDE比較多,直接 package-install 然后輸入 wakatime-mode拢操,下載完成直接锦亦,引入,并設(shè)置好自己的api key,令境。
另外孽亲,他需要python支持,wakatime官方提供了wakatime-cli的程序展父,用于向wakatime推送數(shù)據(jù)返劲,使用python的 pip install完成安裝玲昧,并在emacs中設(shè)置好路徑即可。
;;加載wakatime mode
(load "~/.emacs.d/elpa/mode/wakatime-mode.el")
;;設(shè)定wakatime api key
(custom-set-variables
'(wakatime-api-key "api key")
'(wakatime-cli-path "wakatime-cli 的路徑"))
;;全局開啟wakatime-mode
(global-wakatime-mode 1)
helm
快速補(bǔ)全的一個(gè)插件篮绿,非常好用孵延,提供了 imenu, buffers-list 以及 helm-tags 等操作,很多操作仍在摸索中亲配,不過已經(jīng)感覺非常實(shí)用了尘应。smex
也是快速補(bǔ)全的一個(gè)插件,在提示命令時(shí)異常好用吼虎,helm中也有提供犬钢,不過暫時(shí)還沒開始摸索,先配置上去思灰。等待日后再去除unicad
在emacs下面玷犹,有時(shí)候會(huì)出現(xiàn)編碼無法識(shí)別的情況。而這個(gè)插件非常要用洒疚,可以自動(dòng)識(shí)別文件編碼歹颓,目前的缺陷是 utf8mb4的支持不是很好,尋找替代品種油湖。git-emacs
使用git-emacs作為git庫的支持巍扛,使用了一段時(shí)間,感覺還是挺好用的乏德,除了沒找到如何git push之外撤奸。
mode
所謂的mode,就是根據(jù)文件類型做出不同類型的提示喊括,比如打開.cpp文件寂呛,就會(huì)自動(dòng)匹配為c++ mode,然后所有在c++ mode中的操作均為生效瘾晃,而不影響其他mode贷痪,非常贊的一個(gè)功能,也是我喜歡emacs的原因之一蹦误。
目前配置的mode比較少劫拢,大概有如下幾種 cmake-mode, markdown-mode, php-mode