有趣的emacs

  學習emacs已經兩個星期,一些基本的操做已經學會了。接下來要學習的是怎樣去製做emacs的插件,以及瞭解其運行機制。剛開始,我是下載了大牛的配置,玩了半天,發現了emacs的有趣之處; 後來想讓emacs徹底貼近本身的生活,加一些插件; 但是在大牛的基礎上進行更改,老是會出現錯誤。因而我就把全部的東西進行推倒了歷來,凡是大牛配置裏面的特性,我都在網上搜索,根據本身需求東湊西湊的整合起來,同時加入本身所須要的,就這樣作成了適合本身的emacs。java

1 經常使用插件

 

1.1 ido

  ido主要是加強C-x鍵的, 可以以正則表達式的方式迅速幫你匹配到你要打開的目標,而且提供選擇項。我爲了打開init-custome.el, 如下是C-x C-f的展現:linux

Figure 1: ido的效果git

1.2 smex

  smex主要加強M-x鍵的,可以以正則表達式匹配的方式迅速幫你找到所需的命令,而且提供選擇項。我爲了用cnblog-get-post獲取博客,如下是M-x的展現:github

Figure 2: smex的效果正則表達式

1.3 session

  session插件用來顯示最近打開的文件。這是編輯器所擁有的功能。C-x C-b,在buffer列表裏面選擇全部打開的buffer(buffer即emacs裏面的窗口)。其實單一窗口編輯起來更加爽一些,多窗口反而把編輯窗口的空間越擠越小。編輯器的tab是用來切換窗口,比較適合鼠標。我更加喜歡利用buffer列表來切換窗口。sql

1.4 color-theme

  color-theme是emacs的主題插件,我比較喜歡的主題是calmforest。每一個編輯器都有不少主題的。emacs的主題有幾十多種,是我見過主題最多的編輯器。我曾經配置過eclipse的顏色,那時我完全被戰勝了,發現很難,字體、背景、高亮協調很困難。在主題上面,windows下的notepad++,以及跨平臺的SublimeText是作的比較好的。windows

2 org-mode插件

  我如今寫blog就是用org-mode插件,等會兒我要用cnblog插件將個人博客發佈到博客園上去。org-mode的格式比較簡單,標題的級數是多少,就用多少顆星表示; 至於行間距,字體大小之類的繁雜的東西,所有由org-mode本身幫咱們去調整,特別養眼。我以爲用鼠標拖動的效果不是很精準,用一些符號去設置咱們的格式,插入到文檔裏面,那時更加精確,更加優美的。雖然org-mode算不上專業的文字編輯工具(你們能夠了解一下Latex這個專業工具,emacs也有它的插件)。我以爲處理一些平常的已經的用處了。並且org-mode是能夠畫出流程圖,todo列表的,以及思惟導圖的。一下是我編輯個人blog時的情景:瀏覽器

Figure 3: org-mode的效果緩存

3 evernote插件

  evernote是很優秀的在線筆記。evernote並無提供linux版本的,如今在linux上可使用的方式有以下:瀏覽器的插件形式(始終是基於瀏覽器,沒有客戶端用的爽); nixnote(第三方的linux軟件,用戶體驗太糟糕); Wine虛擬Evernote(始終和linux融合的不夠)。 如今emacs提供了evernote的插件。emacs將筆記編輯出來,經過命令將evernote上傳到雲端。這個插件有個缺陷就是不提供本地緩存,若是網速糟糕也是很糾結的。evernote-mode是XHTML格式,須要用w3m(emacs的文本瀏覽器)才能打開。bash

4 graphviz插件

  graphviz 軟件是一個dot語言的解析器,dot語言可以將腳本轉化爲圖片。用dot來畫流程圖挺方便。以前我設計過linux下的共享內存容器(https://github.com/CharellKing/TimePass),爲了驗證本身設計的容器是正確,經過程序打印是很難作到的,特別是一些很複雜的數據結構(例如紅黑樹);我經過程序將數據結構轉化爲dot腳本,而後經過dot將腳本轉化爲圖片。

Figure 4: dot的效果

5 cc-mode插件

  cc-mode支持不少語言,C/C++ Java, Object-C, CORBAR, AWK, Pike等等。本人是C/C++開發着,也就配置C/C++的開發環境。僅僅有cc-mode還不夠,最多也就支持C/C++的高亮。還須要設置自動完成。在網上搜了不少資料,cedet, ecb, cscope,這三劍客能夠實現C++的代碼自動完成、工程管理、代碼閱讀。因爲emacs已經集成了cedet,集成的太雞肋了,而本身用獨立的包又產生衝突; 因此也就另尋其餘的方法就用clang-mode以及completion-mode來實現自動完成。completion-mode是在輸入時將匹配出的單詞做爲選擇提供給編輯者; 而clang-mode是關聯GCC庫,對類、結構體的提供成員的提示(就是.、->的時候會有函數提示的)。自動完成是解決了,我並不喜歡多窗口,本身寫程序通常都是本身寫cmake來管理工程,因此就不用ecb了。代碼閱讀,函數的跳轉用cscope,能夠湊合着用,不過與eclipse和VS相比仍是差的比較遠(在linux上閱讀代碼能夠用scitool understand,跨平臺工具); 以前想用gtags,效果不理想,也不知道是否是本身不會弄,因此放棄了。

6 總結

  emacs能夠根據本身生活方式來配置,一萬我的有一種方式的emacs生活方式。emacs的設計是插件模式的,這也是軟件設計的精髓。emacs不只僅只有這些,要變成NB的emacser,須要走很遠的路。

相關文章
相關標籤/搜索