Emacs 具備超強的擴展性。這是當今沒有任何其它編輯器能夠比擬 的強大特色。這裏介紹一些很方便的 Emacs Lisp 擴展。 php
有連接的文件可能不是 Emacs 自帶的,你須要下載el文件到你的 load-path 中的一個目錄裏。 html
全部文件能夠點擊連接下載,你也能夠點擊這裏一次性下載全部 el 文件,可是不包括大型的 elisp 包,好比 dictionary. [下載]。 java
這裏提供的下載是我正在用的版本。我沒有列出我找到它們的地址, 由於我記不住那麼多。若是你須要最新的版本,請查看文件裏的網址 到做者的主頁。 linux
每一個標題後面的lisp代碼是須要寫到配置文件裏的東西。 web
(require 'session) (add-hook 'after-init-hook 'session-initialize)
使用了這個擴展以後,你上次離開 Emacs 時的全局變量 (kill-ring,命令記錄……),局部變量,寄存器,打開的文件,修 改過的文件和最後修改的位置,…… 所有都會被記錄下來。 正則表達式
加載了 session 以後菜單上會多兩項:最近訪問過的文件和最近 修改過的文件。看這個圖 。 shell
(load "desktop") (desktop-load-default) (desktop-read)
若是你想保存上次打開的文件記錄,那麼可使用 desktop。這是 Emacs 自 帶的。你只須要加入以上設置,而後 M-x desktop-save。之後 Emacs 啓動時就會打開你上次離開時的全部 buffer. 編程
M-x desktop-clear 能夠刪除記住的內容,你閒如今記住的 buffer 太多就能夠採用這個辦法。不過我仍是建議用 ibuffer(見下) 來管理這些buffer,由於有時你會發現,若是刪掉所有記住的buffer, 之後你須要必定的時間來打開你常常編輯的文件! windows
若是session跟desktop配合,下次啓動Emacs 的時候,就像根本 沒有關閉 Emacs 同樣!多爽! 瀏覽器
把這幾行加入 .emacs 就能夠把 C-x C-b 那個普通的 buffer menu 換成很是方便的 ibuffer 啦!
(require 'ibuffer) (global-set-key (kbd "C-x C-b") 'ibuffer)
使用了 desktop 以後有可能使你同時有幾十個 buffer 同時打開 着。有時你想把其中一些關閉,有時你想在某些 buffer 裏尋找某個 regexp。這個時候你能夠用 ibuffer,它有跟 dired 類似的界面。 能夠對 buffer 進行各類標記,排序,隱藏,查找,替換。很是好用。 看看這個抓圖就是我限定顯示 emacs-lisp-mode 和 c-mode 的 buffer,按 major mode 名稱排序, 並作上一些記號的狀況。
我經常使用的一個功能是,用 %-n 標記符合某種名字的 buffer,然 後按 "O" 在這些buffer裏尋找我須要的字串。好比在全部打開的後 綴爲 html 的 buffer 裏尋找 "Emacs" 字樣,獲得以下結果。
(require 'browse-kill-ring) (global-set-key [(control c)(k)] 'browse-kill-ring) (browse-kill-ring-default-keybindings)
方便的在 kill-ring 裏尋找須要的東西。
你是否是常常按 C-y 放進一個 kill-ring 裏的單元。而後 M-y,M-y,…… 來尋找你須要的好久之前剪切下來的東西?很費事吧?用了 browse-kill-ring 就行了。你只須要把它綁定到一個熱鍵,好比 C-c k: 就能出現這樣一個buffer。[查看圖形]
kill-ring 裏的內容均可以方便的瀏覽,粘貼。具體操做請在這 個 buffer 裏 C-h m 或者 ?.
你可能用過 iswitchb。可是當有不少buffer時,iswitchb 仍是很慢。你可 以使用ido。這是我見過的最方便的切換buffer,尋找文件的擴展了。在你的 .emacs 文件里加入:
(require 'ido) (ido-mode t)ido 主要有兩個界面:打開文件和切換buffer,它們之間能夠隨便切換。它的原 始的鍵設定不是很方便直觀,因此我把它另外設置了一下。看 這個列表。其實你從這個列表就能夠看出 ido 的功能。 我這裏只敘述一下基本的操做。
啓動 ido-mode 之後,你能夠在 C-x C-f 打開文件時獲得一個以下的界面:
你開始輸入文件名,前綴匹配的文件和目錄都會列在光標後面的表裏。目錄 是紅色的。
你可使用 C-s,C-r 或者左右光標鍵在匹配的文件之間來回旋轉,按上下 光標能夠在匹配的目錄名之間旋轉。你能夠按 TAB 補全名字,方括號裏的內容 是你按 TAB 將會補全的字符。按 backspace 遇到目錄名時,一次會吃掉整個目 錄名,而且到達上一級目錄。C-k 能夠刪除一個文件。別擔憂,當刪除文件時, 你會被要求作出明確的回答。
若是你按 C-p 就會啓動部分匹配,而不是嚴格前綴匹配。這時只要文 件名的一部分與你的輸入匹配就會列在表中。
按 C-t 就會切換到正則表達式匹配方式,你輸入的文字將被做爲正則 表達式對文件進行匹配。好比我輸入 ".*el$" 就能夠獲得全部以 "el" 結尾的 文件列表。
另外,C-c 和 C-a 分別切換大小寫匹配和忽略某些文件。
你訪問過的目錄都會被 ido 記住,你能夠按 M-up 和 M-down切換之前訪問 過的目錄,按 M-left 和 M-right 能夠提出之前使用過的文件名。
按 C-b 就會切換到選擇buffer模式。按 C-d 就會進入Dired.
注意,你若是要建立一個新的文件叫 "ab",而你的目錄裏有匹配前綴的文件 或目錄,RET 就會打開部分匹配的文件。因此這個時候你必須按 C-j 來建立這 樣一個文件。若是沒有匹配的文件,那麼RET也會建立一個新的文件。
因爲方向鍵,backspace 和 C-f, C-b 都被做爲其它用途了,因此若是你想 把光標移動到行首修改一些東西,你必須按 C-e 進入編輯模式。
Emacs 打開文件的函數叫 find-file。這是不少人不理解的問題。下面咱們 就能看到,有了 ido 以後,這個函數就名副其實了。當你輸入了一個文件名或 者正則表達式,而在當前目錄沒有這樣的文件,你就能夠利用ido的查找功能了。 我舉一個例子好了。
我常常同時編輯不一樣種類的文件,它們在系統裏不一樣的目錄中。它們的目錄 名會被ido記住。這樣我打開一個文件時,能夠無論它在哪一個目錄。我只須要輸 入它的名字。好比,我剛纔已經打開了
~/html/emacs_elisp.html /usr/local/texlive/texmf-local/tex/latex/CJK/GB/c19fzhc.fd ~/.emacs.d/site-lisp/folding.el ....如今我想打開另外一些
/usr/local/texlive/texmf-local/tex/latex/CJK/GB/目錄下的 .cap 文件。我就在 C-x C-f 的界面按輸入 "cap$",而後打開正則匹配 和部分匹配,出現如下界面:
由於當前目錄(PWD)下沒有後綴是 fd 的文件,因此我按了一下 M-up,這下 成了這個樣子:
顯然它找到一個結尾是 "cap" 的文件,可是這不是我想要的,因而我繼續按 一下 M-up 到再上面一個目錄裏去找。就成了這樣:
這就是我須要的文件!想想,你的當前目錄不在那個地方,用別的辦法打 開如此深一個目錄裏的文件須要花多少時間?
其實咱們還有一個竅門,剛纔若是在不能匹配的時候按 M-s,ido 就會把所 路徑合併,找到匹配文件,而後給出一個列表:
切換 buffer 的界面也跟打開文件功能相似。不過少了一些文件特有的功能, 多了一些buffer特有的的功能。
打開文件時 C-k 是刪除文件,如今 C-k 變成了關閉 buffer。若是你按 C-a 就會顯示一般被忽略的 buffer。
若是不存在這樣的的buffer,你能夠直接回車新建一個buffer,也可使用 C-f 切換到打開文件界面。
這個擴展功能實在太多,你看了個人敘述可以體會到它的方便了吧。可是實 際使用時,你不多能記住全部這些功能。最好是本身綁定鍵。在須要的時候能夠 查詢這個鍵綁定。就像個人這個鍵綁定。
最新的 ido 能夠逐步篩選你須要的文件 (ido-restrict-to-matches),你能夠把這段代碼加入你的 .emacs.
swbuff(require 'swbuff) (global-set-key (kbd "") 'swbuff-switch-to-previous-buffer) (global-set-key (kbd "") 'swbuff-switch-to-next-buffer) (setq swbuff-exclude-buffer-regexps '("^ " "\\*.*\\*")) (setq swbuff-status-window-layout 'scroll) (setq swbuff-clear-delay 1) (setq swbuff-separator "|") (setq swbuff-window-min-text-height 1)
使用這個,你就能夠方便的在最近編輯的 buffer 之間切換了。 切換的時候會出現一個小窗口顯示附近的buffer,就像翻頁同樣。看 看抓圖。
我把它綁定到了 C-prior 和 C-next,按起來很方便。並且你可 以用變量 swbuff-exclude-buffer-regexps 設定你不想看到的 buffer。它們不會出如今列表裏。這個例子中我把全部名稱開頭是空 格的 buffer 和名字先後都是 "*" 的都排除在輪訓之外,這樣就可 以在不一樣的文件之間切換而不被惱人的臨時 buffer 擾亂了。
一個很重要的變量是 swbuff-status-window-layout, 改變它的 值能夠改變 swbuff 下面那個窗口的顯示方式。
若是你的 buffer 不少,這個窗口能夠長得很大。若是你把 swbuff-status-window-layout設爲 'adjust,則不論何時都會 出現這樣的大窗口,設爲 'default 則只有單窗口時纔出現大窗口。 雖然這個窗口只顯示幾秒鐘,可是 我很討厭一個那麼大的窗口在我 面前一閃。如今若是你把它設爲 'scroll,不論何時都只佔用一 行。這樣buffer太多時,那個窗口不會佔用太多空間擾亂視線。
原來的 swbuff 有一個小小的 bug, 不管 swbuff-status-window-layout 是什麼值,都會顯示一個很大的窗口 顯示全部的 buffer,這個文件是我修改過的版本。
swbuff-clear-delay 能夠控制小窗口消失的延遲。
swbuff-window-min-text-height 能夠控制小窗口的大小。若是 設爲 0, 就不會打開小窗口了。
(require 'tabbar) (tabbar-mode) (global-set-key (kbd "") 'tabbar-backward-group) (global-set-key (kbd "") 'tabbar-forward-group) (global-set-key (kbd "") 'tabbar-backward) (global-set-key (kbd "") 'tabbar-forward)
你曾經以爲 Windows 樣式的編輯器上面的 tab 很好用吧?其實 Emacs 的更好,它不但能夠把全部 buffer 列在 tab 上,並且根據 major mode 對 tab 進行分組。你能夠用 customize-group RET tabbar RET 來設置它的選項。
我把Windows鍵盤上的 "Win" 鍵綁定到了這個功能,由於 tabbar 很像Windows 的風格。按 Win-left 和 Win-right 就會在同組 tab 之間切換,Win-up 和 Win-down 能夠在分組之間切換。
看看下面幾個圖你就知道它如何好用啦!
顯示 html mode 的分組:
分組列表
在不一樣的窗口裏能夠有獨立的 tab。圖片太大,要看的話點擊這裏
tabbar 有一個小小的 Hack, 可使你更方便。
這個是 Emacs 自帶的。M-x speedbar 就能夠啓動它。它可讓你 方便的瀏覽文件,你還能夠顯示文件裏的標題,函數,變量……
在你編輯不一樣的文件時,它能夠顯示當前文件所在目錄裏的相關文 件和它們的信息,好比文件是否須要從新編譯,elisp文件是否已 經編譯,…… 等等。
你能夠看看個人抓圖。
(autoload 'table-insert "table" "WYGIWYS table editor")
很是酷的一個擴展。能夠「所見即所得」的編輯一個文本模式的 表格。就跟不少字處理程序那樣操做,能夠識別文本文件裏原本就存 在的表格,並且能夠把表格輸出爲 HTML 和 TeX。看看個人抓圖吧。
這個擴展能夠幫你保存一個「最近打開的文件」列表。在 .emacs 文件里加 入:
(require 'recentf) (recentf-mode 1)你能夠把不經常使用的C-x C-r 綁定到這樣一個函數:
(defun recentf-open-files-compl () (interactive) (let* ((all-files recentf-list) (tocpl (mapcar (function (lambda (x) (cons (file-name-nondirectory x) x))) all-files)) (prompt (append '("File name: ") tocpl)) (fname (completing-read (car prompt) (cdr prompt) nil nil))) (find-file (cdr (assoc-ignore-representation fname tocpl))))) (global-set-key [(control x)(control r)] 'recentf-open-files-compl)這樣你就能夠 C-x C-r 而後 TAB 列出最近打開文件列表了。
你是否是以爲 Emacs 的「矩形區域操做」不太直觀?使用這個包以後矩形 region會被真正顯示成一個矩形。[查看圖形]這 可使你的矩形操做大大方便。
若是你已經有了一個 region。你可使用 C-x r C-x 把它顯示爲一個矩形。 若是你剛開始設定一個矩形區域,你可使用 C-x r 做爲你的 set-mark-command 的前綴,好比 C-x r C-SPC。那麼區域會被顯示爲矩形。
這個是 Emacs 自帶的功能,但是知道它的人很少。不少人用的是M-/ (dabbrev-expand) 這樣的東西。 hippie-expand 要強大的多。由於它可使用 擴展函數任意擴充!你能夠把你的 M-/ 綁定到 hippie-expand,立刻就能夠體 會到它的方便。
(global-set-key [(meta ?/)] 'hippie-expand)你能夠設置如下 hippie-expand 的補全方式。它是一個優先列表, hippie-expand 會優先使用表最前面的函數來補全。一般個人設置是:
(setq hippie-expand-try-functions-list '(try-expand-dabbrev try-expand-dabbrev-visible try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-complete-lisp-symbol-partially try-complete-lisp-symbol))
這是說,首先使用當前的buffer補全,若是找不到,就到別的可見的窗口裏尋找, 若是還找不到,那麼到全部打開的buffer去找,若是還……那麼到kill-ring裏, 到文件名,到簡稱列表裏,到list,…… 當前使用的匹配方式會在 echo 區域 顯示。
特別有意思的是 try-expand-line,它能夠幫你補全整整一行文字。我不少 時後有兩行文字大體相同,只有幾個字不同,可是我懶得去拷貝粘貼如下。那 麼我就輸入這行文字的前面幾個字。而後多按幾下 M-/ 就能獲得那一行。
這是一個很小的函數。你是否是以爲 Emacs 在匹配的括號之間來回跳轉的時 候按 C-M-f 和 C-M-b 太麻煩了?vi的 % 就很方便,咱們能夠把 % 設置爲匹配 括號。但是你想輸入 % 怎麼辦呢?
一個很巧妙的解決方案就是,當 % 在括號上按下時,那麼匹配括號,不然輸 入一個 %。你只須要在 .emacs 文件里加入這些東西就能夠達到目的:
(global-set-key "%" 'match-paren) (defun match-paren (arg) "Go to the matching paren if on a paren; otherwise insert %." (interactive "p") (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) ((looking-at "\\s\)") (forward-char 1) (backward-list 1)) (t (self-insert-command (or arg 1)))))
有時你須要跳到另外一個文件進行一些操做,而後很快的跳回來。你固然能夠 使用 bookmark 或者寄存器。可是這些實在是太慢了。你多想擁有vi那樣的 ma, mb, 'a, 'b 的操做。如今你能夠用幾行 elisp 達到相似的目的:
(global-set-key [(control ?\.)] 'ska-point-to-register) (global-set-key [(control ?\,)] 'ska-jump-to-register) (defun ska-point-to-register() "Store cursorposition _fast_ in a register. Use ska-jump-to-register to jump back to the stored position." (interactive) (setq zmacs-region-stays t) (point-to-register 8)) (defun ska-jump-to-register() "Switches between current cursorposition and position that was stored with ska-point-to-register." (interactive) (setq zmacs-region-stays t) (let ((tmp (point-marker))) (jump-to-register 8) (set-register 8 tmp)))當你按 C-. 時就作了一個記號。而後你能夠到別處,按 C-, 就能夠在這兩點之 間來回跳轉了。這雖然沒有 vi 的 26 個 mark 多,可是你仔細想一想,vi的26個 mark,你一般能用到幾個?
(defun wy-go-to-char (n char) "Move forward to Nth occurence of CHAR. Typing `wy-go-to-char-key' again will move forwad to the next Nth occurence of CHAR." (interactive "p\ncGo to char: ") (search-forward (string char) nil nil n) (while (char-equal (read-char) char) (search-forward (string char) nil nil n)) (setq unread-command-events (list last-input-event))) (define-key global-map (kbd "C-c a") 'wy-go-to-char)
很是感謝 Oliver Scholz 提供這個函數給 我。
這個函數是一個 vi 的 "f" 命令的替代品。vi的用戶知道,vi有 一個特別好的命令 "f"。當你按 "fx", x 是任意一個字符時,光標 就會移動到下一個 "x" 處。這以後只要按 ";"(分號),光標就到再 下一個 "x"。
舉個例子說明這個命令的用途。好比咱們有這樣一行字,光標在 行首。
(setq unread-command-events (list last-input-event))) ^^^^^
咱們但願迅速的到達最後那個 event 處,因而我在 vi 裏按 "fe"。結果光標到了 "setq" 的那個 e 上面,這時候我接着按 ";", 不一下子就到了咱們想要的地方。很方便吧?可能起初不以爲,後來 你發現這真的很是好!
我一直以爲 Emacs 沒有這樣一個方便的命令,可是 Oliver 給了 我一個完美的答案:
有了這段代碼以後,當你按 C-c a x (x 是任意一個字符) 時,光 標就會到下一個 x 處。再次按 x,光標就到下一個 x。好比 C-c a w w w w ..., C-c a b b b b b b ...
我以爲這個方式比 vi 的 "f" 要快。
這兩個包能夠用來顯示文件的行號。而且根據是否空行和文件行 的語法加亮顯示不一樣的數字顏色。
看看個人抓圖。
這兩個函數能夠分別把一個區域和匹配某個regexp的行都藏起來, 就跟不存在同樣……這樣你就能夠對某些內容進行任意的操做而不會 影響到其它的部分。
hide-lines 在操做某些行的時候用起來特別方便。加一個前綴參 數能夠把不匹配的行都藏起來,只看到匹配的!看看我只顯示這個文 件裏含有global-set-key 的行:
;;hide region (require 'hide-region) (global-set-key (kbd "C-c r") 'hide-region-hide) (global-set-key (kbd "C-c R") 'hide-region-unhide) ;; hide lines (require 'hide-lines) (global-set-key (kbd "C-c l") 'hide-lines) (global-set-key (kbd "C-c L") 'show-all-invisible)
個人 folding 配置很長,要看請點擊這裏。
我編輯了這麼長一個 HTML 文件,你以爲必定很費力,不容易定 位吧?其實個人屏幕看起來就是這 個樣子。全部小節都被我摺疊了起來,我很容易就能夠調換小節 的位置。我剛纔把folding的大段的配置代碼移動到了另外一個文件, 就像移動了一行。
folding 根據不一樣的文檔有不一樣的標記,它都是基於註釋的。本 網頁就是這樣一個例子。
把語法加亮的文件輸出成彩色 HTML 文件。看看這個例子。
(autoload 'dictionary-search "dictionary" "Ask for a word and search it in all dictionaries" t) (autoload 'dictionary-match-words "dictionary" "Ask for a word and search all matching words in the dictionaries" t) (autoload 'dictionary-lookup-definition "dictionary" "Unconditionally lookup the word at point." t) (autoload 'dictionary "dictionary" "Create a new dictionary buffer" t) (autoload 'dictionary-mouse-popup-matching-words "dictionary" "Display entries matching the word at the cursor" t) (autoload 'dictionary-popup-matching-words "dictionary" "Display entries matching the word at the point" t) (autoload 'dictionary-tooltip-mode "dictionary" "Display tooltips for the current word" t) (autoload 'global-dictionary-tooltip-mode "dictionary" "Enable/disable dictionary-tooltip-mode for all buffers" t) (global-set-key [mouse-3] 'dictionary-mouse-popup-matching-words) (global-set-key [(control c)(d)] 'dictionary-lookup-definition) (global-set-key [(control c)(s)] 'dictionary-search) (global-set-key [(control c)(m)] 'dictionary-match-words) ;; choose a dictionary server (setq dictionary-server "localhost") ;; for dictionary tooltip mode ;; choose the dictionary: "wn" for WordNet ;; "web1913" for Webster's Revised Unabridged Dictionary(1913) ;; so on (setq dictionary-tooltip-dictionary "wn") (global-dictionary-tooltip-mode t) ;(dictionary-tooltip-mode t)
鏈接到 dict 協議服務器,而且查詢單詞含義。按 C-c d 查詢道當 前單詞,按 C-c m 在字典裏查找一個匹配的單詞,鼠標郵件點擊單詞 會彈出菜單。還有 tooltip 功能!很是好用!你能夠看看個人屏幕截圖。
你能夠在本身機器上安裝一個 dictd。這樣就不須要連到很遠的服 務器查字典了。
Emacs 提供給你全部的配色機制,但是因爲你的藝術細胞不夠,常常爲找不 到好的配色方案而煩惱。使用這個包就能夠方便的改變你的 Emacs 的配色方案 啦!看看個人屏幕抓圖 [1] [2] [3]
它提供了50種以上的配色方案。你只須要把:
(require 'color-theme)加入到 .emacs 文件。使用 M-x color-theme-select 就會出現一個配色方案選 擇窗口,在配色方案上按 l 就能夠改變當前 frame 的配色,按 i 就能夠改變 全部 frame 的配色。
若是你想選定一個配色方案後就一直用它,而避免每次都加載大量用不着的 lisp代碼,按 p 就能夠把當前配色方案的 lisp 打印出來,你能夠把它加到你 的 .emacs 文件。而不使用 (require 'color-theme) 這樣能夠加快啓動速度。
這個擴展能夠把 Emacs 變成一個圖片瀏覽器。看看抓圖吧。
(autoload 'mmm-mode "mmm-mode" "Multiple Major Modes" t) (autoload 'mmm-parse-buffer "mmm-mode" "Automatic MMM-ification" t)
你想過一個 buffer 裏同時存在不少個 major mode 嗎?如今用 MMM 就能夠辦到了。在不一樣的區域擁有對應鍵綁定,變量,縮進 ……
看看個人抓圖,HTML, Emacs Lisp, Perl, C 和 LaTeX 全都都在同一個 buffer 裏被正確的語法 加亮了!並且TAB在不一樣的區域均可以進行正確縮進。在 LaTeX 的區 域還可使用 AUC TeX 來處理某個部分。
固然我如今是在濫用這個模式。若是你有嵌入 HTML 的 JavaScript 或 CSS2, PL/SQL,……這個就有用了。
我可使用這個擴展來處理 CWEB 程序。最外面的 major mode 用 cweb-mode, 裏面的 TeX 和 C 的區域就使用它們各自的TeX-mode 和 c-mode。看起來就像這個樣子 。
看到這個名字你還覺得是一個 TeX 發行吧?它不是一個 TeX 發 行,而是一個專門用來幫助做者寫 TeX/LaTeX 文檔的工具。它大大 增強了 LaTeX 用戶的能力。你寫文檔時可以只 TeX 一個你以爲須要 看到效果的 region 的內容,而沒必要等待漫長的編譯過程啦!
能夠把 LaTeX 文檔的效果插入到文檔裏,造成一個預覽,與你的 原文件一一對照。很是方便。你能夠看看個人抓圖:
注意要用這個包,你必須安裝 TeX 系統和 AUCTeX.
(require 'ctypes) (ctypes-auto-parse-mode 1)
ctypes 能夠識別你的 C 文件裏的類型定義 (typedef)。自動對 它們進行語法加亮。
ECB(Emacs Code Browser) 是一個代碼瀏覽器,它依賴於Semantic 和Eieio。
它們組合能夠實現很好的文法分析的代碼瀏覽。ECB 在 Semantic 和 Eieio 的支持下,能夠識別許許多多種計算機語言,C, C++, Java, Elisp, ...
看看這個抓圖。
(require 'emacs-wiki) (add-hook 'emacs-wiki-mode-hook (lambda () (define-key emacs-wiki-mode-map (kbd "C-c C-h") 'emacs-wiki-preview-html) (define-key emacs-wiki-mode-map (kbd "C-c C-c") 'emacs-wiki-preview-source) (define-key emacs-wiki-mode-map (kbd "C-c C-v") 'emacs-wiki-change-project) )) ;; (setq emacs-wiki-grep-command "glimpse -nyi \"%W\"") (setq emacs-wiki-publishing-directory "publish") (setq emacs-wiki-directories '("~/WiKi")) (setq emacs-wiki-meta-charset "gb2312") (setq emacs-wiki-style-sheet "") (setq emacs-wiki-inline-relative-to 'emacs-wiki-publishing-directory) (defun emacs-wiki-preview-source () (interactive) (emacs-wiki-publish-this-page) (find-file (emacs-wiki-published-file))) (defun emacs-wiki-preview-html () (interactive) (emacs-wiki-publish-this-page) (browse-url (emacs-wiki-published-file))) (setq emacs-wiki-projects `(("default" . ((emacs-wiki-directories . ("~/WiKi")))) ("work" . ((fill-column . 65) (emacs-wiki-directories . ("~/workwiki/"))))))
用來製做 WiKi 的包。很是方便。看看個人抓圖。
這上面的只是我本身的設定,你要根據本身的狀況修改。
我寫了一個簡要的 WiKi 說明在 這 裏。
更多的信息請參考 http://repose.cx/emacs/wiki/。
——————————————————————————————————————
source insight是windows環境下用於代碼開發和閱讀的利器,功能強大,對於大規模代碼的維護和開發幾乎不可或缺(這裏
指它提供的功能,相似的商業工具還有不少)。使用emacs替代source insight緣由有:a,si是商業軟件,使用須要付費,雖然能夠從網上
找到破解版本;b,對於unix/linux愛好者或者須要同時工做於unix和windows環境下的開發人員,emacs是通用工具;emacs其它的強大
功能暫且不表。
下面是基於windows xp平臺的安裝方法,其中大部分步驟和unix環境下的同樣,只有cscope的有所不一樣。
1)準備工做
首先,你得下載一下一些工具(擴展),emacs,cscope,ecb,cedet是必須的,session,doxymacs不是必要的,可是裝上會
更方便。下載這些東西的網址連接以下:(固然,下面這些東西均可以從google找到下載連接,下面提供的網址都是google出來的,若是
下面提供的連接不可用了,你們能夠本身google一把)
i)emacs: http://www.gnu.org/software/emacs/
從gnu的ftp網站上下載windows版本,最新的版本是emacs-22.1。下面的設置都是在這個版本上進行的。
ii)cscope:cscope的主頁 http://cscope.sourceforge.net/,其中有一個download的連接,從那裏能夠下載到編譯好的壓縮包。
win32版本的下載地址: http://iamphet.nm.ru/cscope/index.html,壓縮包中有兩個編譯好的exe文件:cscope.exe, sort.exe
iii)ecb:主頁地址 http://ecb.sourceforge.net/,download頁面中還有一個Xemcas的安裝程序setup.exe,能夠試試,我沒有使用這個。
sourceforg下載地址 http://sourceforge.net/project/showfiles.php?group_id=17484
iv)cedet:主頁 http://cedet.sourceforge.net/,下載release壓縮包1.0pre4.tar.gz,這個包中已經包含了semantic,ede,eieio,
speedbar,所以下載了這個大包後不用分別下載這些擴展插件。
v)session:sf下載地址 http://sourceforge.net/project/showfiles.php?group_id=46019
vi)doxymacs:地址 http://doxymacs.sourceforge.net/,
下載 http://sourceforge.net/project/s ... p;release_id=514962
vii)下載windows下的bash工具,主要是用到其中的find工具,用來手工生成cscope.files。若是安裝了cygwin則不用安裝這個了。
地址: http://folk.uio.no/andreass/unix_tools.html
2)安裝
安裝emacs:這個很簡單,只要將壓縮包解開,放到你想放的位置就能夠用了,若是要在windows的開始菜單中添加菜單項,點擊bin目錄下
的addpm運行,就會在菜單中加入gnu菜單項。
安裝cscope:a,解壓平臺不相關的那個tar.gz包,將/contrib/xscope/xscope.el拷貝到emacs-22.1/site-lisp目錄下(emacs-22.1是
你安裝emacs的目錄);b,解壓win32版本的cscope,將cscope.ext sort.exe拷貝到emacs-22.1/bin目錄下(這個路徑不是必要的,由於
cscope在windows下要用起來還得費點勁,4)點會講到)
【site-lisp目錄下插件安裝】
安裝ecb:解壓,將解壓後的ecb目錄拷貝到site-lisp目錄下。
ecb,cedet(semantic)提供了不少功能,不過因爲太多了,須要慢慢摸索,目前使用cscope已經基本上實現了si上的幾個經常使用功能,ecb + semantic能夠實現像si中的函數/變量上下文顯示功能,
可是因爲4)ii)中提到的問題,這個顯示上下文功能有時候不起做用。
還有一些有用擴展:http://docs.huihoo.com/homepage/shredderyin/emacs_elisp.html
——————————————————————————————————————
單獨的Emacs軟件的話,雖然也有着除了編輯之外的各類各樣的功能,例如Mail,網頁瀏覽等等,可是,僅對於我我的我仍是以爲他就是個文本編輯器,由於別的功能我不用,也用不上。並且這個編輯器使用時還很是的費勁,覺不出他比微軟的記事本強在哪裏。
可是,Emacs支持配置其工做環境,當結合了一些插件後,他就發揮出強大的功能了。
這個強大的功能 = SourceInsight+專用仿真Debug軟件之和。
還有就是,他是免費的,FreeDownload的,可自定義的。
微軟在努力讓咱們告別鍵盤,Linux則建議你們沒事別老碰鼠標。
Emacs + gtags + cedet + ecb + doxymas + session + GDB
Emacs: GNU Emacs
gtags: GNU GLOBAL source code tag system
cedet: Collection of Emacs Development Environment Tools
ecb: Emacs Code Browser
doxymacs: Doxygen + Emacs
Doxygen: Source code documentation generator tool
session: Session Management for Emacs
GDB: GNU Project debugger
我的環境:Ubuntu 10.04
目標源代碼:C語言
建議寫個hello來試運行,gtags創建tags或htags建立HTML模式源代碼和doxygen生成文檔等的時候,花費時間極長。同時也寫好hello的configure.ac和Makefile.am吧,可以編譯後執行,以便體驗功能。
Emacs:GNU Emacs (Ver:23.1)
Emacs:Editor MACroS(宏編輯器)
HomePage:http://www.gnu.org/software/emacs/
功能和熱鍵的學習:
我的.emacs文件中的內容:例: ;load-path (add-to-list 'load-path "/home/yourname/.emacsLoadpath")
;; Author: Mark Chen ;; 2012.2.24 (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(current-language-environment "Chinese-GB") '(default-input-method "chinese-py") '(display-time-mode t) '(column-number-mode t) '(show-paren-mode t);顯示與當前光標所在位置的括號匹配的另外一個括號 '(inhibit-startup-screen t)) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. ) ;; 輸入法設置爲IBus ;; set ibus-el (add-to-list 'load-path "~/.emacs.d/ibus-el-0.3.1") (require 'ibus) (add-hook 'after-init-hook 'ibus-mode-on) ;; 當光標接近時,自動移開光標 (mouse-avoidance-mode 'animate) (setq-default cursor-type 'bar);光標顯示爲一豎線 (tool-bar-mode -1);不顯示工具欄 (menu-bar-mode -1);不顯示菜單欄 (setq x-select-enable-clipboard t);;支持emacs和外部程序之間進行粘帖 (fset 'yes-or-no-p 'y-or-n-p);以‘y/n‘字樣替換原默認的‘yes/no‘字樣 (setq frame-title-format "%d@emacs");;標題欄顯示buffer名字 (setq make-backup-files nil) ;關閉自動備份功能 (setq auto-save-mode nil) (setq auto-save-default nil);不生成#filename#臨時文件 (setq require-final-newline t);;自動在當前的buffer文件的最後加一個空行 (global-set-key "\r" 'align-newline-and-indent);;自動縮進<C-j>變爲<Enter> (setq echo-keystrokes 0.1) ;;儘快顯示按鍵序列提示 ;; 設置指針顏色白色 (set-cursor-color "white") ;; 鼠標顏色設置爲白色 (set-mouse-color "white") ;; (global-font-lock-mode t) ;;hightlight grammer語法高亮 (global-hl-line-mode 1);高亮當前行 ;;;;;;;;;;;;;;; 啓動最大化 ;;;;;;;;;;;;;;;;;; ;(require 'maxframe) ;(add-hook 'window-setup-hook 'maximize-frame t) ;下載maxframe.el並放置在<load-path>中 ;http://emacsblog.org/2007/02/22/maximize-on-startup-part-2/ ;;;;;;;; ;;;;;;;;;;; Web 方式顯示行號 ;(set-scroll-bar-mode 'right')滾動條顯示在右側 (set-scroll-bar-mode nil) ;不顯示滾動條 (add-to-list 'load-path "~/.emacs.d/") (require 'wb-line-number) (wb-line-number-toggle) ; 下載wb-line-number . el ; http://homepage1 . nifty.com/blankspace/emacs/elisp.html ;;;;;;;;;;;;;;;;;;;;; ;;;;; cc-mode ;;;;;;;; (add-to-list 'load-path "~/.emacs.d/cc-mode-5.32.2") (require 'cc-mode) (c-set-offset 'inline-open 0) (c-set-offset 'friend '-) (c-set-offset '
-------------------------
source insight serial number for all versions:
SI3US-719473-71478
Source Insight is a revolutionary project oriented program code editor and code browser, with built-in analysis for C/C++, C#, and Java programs, as well as other languages. Source Insight parses your source code and maintains its own database of symbolic information dynamically while you work, and presents useful contextual information to you automatically. Not only is Source Insight a great program editor, but it also can display reference trees, class inheritance diagrams, and call trees. Source Insight features the quickest navigation of source code and source information of any programming editor. Let Source Insight loose on your project and see what a difference it makes in your productivity.
sourcenav
http://sourcenav.sourceforge.net/index.html
What is Source-Navigator? |
---|
Source-Navigator works with the Insight GUI interface for GDB.
Source-Navigator supports C, C++, Java, Tcl, [incr Tcl], FORTRAN and COBOL, and provides and SDK so that you can write your own parsers.
Use Source-Navigator to:
Emacs Code Browser
ECB stands for "Emacs Code Browser". While Emacs already has good editing support for many modes, its browsing support is somewhat lacking. That's where ECB comes in: it displays a number of informational windows that allow for easy source code navigation and overview.
————————————————————————————————
網友摘錄:
」
1.Color Theme,在~/.emacs裏添加以下行
;;COLOR_THEME
;;加載 Color Theme
(require 'color-theme)
;;Color Theme應用的主題
(color-theme-classic)
這個還行,勉強能夠接受,就是爲Emacs換個主題
2.顯示行號,我下了半天沒下載下來,不過我以爲這個應該挺好,比Emacs只在下邊顯光標行好多了
3.session,
4.cscope,
5.ECB,
6.CEDET,
7.Xrefactory,也許是由於商業軟件的緣由,感受這個最猛,但是在網上找不到License string
免免強強就收穫了這點,真是可憐啊,有個我最想要的像Viual Assists X同樣把變量高亮顯示了一直找不到,不知道Xrefactory有沒有,還有就是能夠在函數的定義和實現之間跳轉,、
「
http://www.xref.sk/xrefactory/download.html
1. PrerequisitesYou need Emacs or XEmacs installed on your computer. They are free software.Emacs for Unix/Linux systems can be found at http://www.gnu.org/software/emacs GNU site. Most Linux distributions, and many other Unix systems come with Emacs pre-installed or pre-packaged for installation. Emacs for MS-Windows can be found on http://www.gnu.org/software/emacs/windows/ntemacs.html . All Emacs packages required by Xrefactory are included in the standard Emacs distribution. XEmacs for nearly all platforms can be downloaded from http://www.xemacs.org pages. Most Xrefactory functions will work with the default XEmacs installation. Installation of the 'mail-lib' package is required for JavaDoc browsing and the 'xemacs-base' package is required for XEmacs IDE functions (compile, run, etc.). |
2. Installation
3. Training ExamplesIt is highly recommended that you work through the tutorials after the installation. The C and C++ tutorials are stored in the cexercise and cppexercise directories of each distribution package. Tutorials will guide you through the typical usage of Xrefactory. To start the tutorial just open one of files cexercise/index.c or cppexercise/index.cpp and follow the instructions written there.
4. LicenseYou are supposed to purchase a license when using Xrefactory beyond the 8 days evaluation period! By downloading Xrefactory you agree with terms of our license agreement conditions. |