Language

Friday, October 12, 2012

Emacs 大綱模式簡介(Outline mode)

這是筆者很多年前寫的文章,發表在 NNTP news 上面,留存在本 blog 中。


* 簡介 
我想很多人在作筆記或是絞盡腦汁想問題的時候,常常會用大綱來把自己的想法 
記錄下來,比如說像以下的方法: 
I. 棒球 
A. 職棒 
1. 台灣職棒 

2. 美國職棒 
a. 國家聯盟 
b. 

3. 日本職棒 
a. 中央聯盟 
b. 太平洋聯盟 

B. 業餘棒球 

II. 籃球 
A. 職籃 

這樣的階層架構可以在 Emacs 中使用他的大綱模式(outline mode) 來做到,幫 
助我們來紀錄我們的想法或是像筆者就常常在聽完演講之後,把用筆記上的演講 
大綱筆記,用 Emacs outline mode 記錄下來,供日後查詢。Emacs 也可以把這 
些 outline 轉換成其他格式,比如說: LaTeX 或是 Info 檔格式。在本文中提 
到的 Emacs 以 GNU Emacs 為準,XEmacs 應該也是差不多,不過我建議你們用 
GNU Emacs, 因為 Emacs 處理字型比較清晰,而且對於中文支援較佳。 

* Outline mode 
** 進入大綱模式 
使用者可以用 M-x outline-mode 來進入大綱模式,打完這個命令之後就可以看 
到目錄列上出現 "Headings" "Show" "Hide" 三個下拉式選單項目,不過,先別 
急,先了解一些基本概念再來使用。如果你有開啟 font-lock-mode 的話,你打 
完上述命令之後就可以看到這篇文章的標題顏色變了,因為筆者就是用 
outline-mode 來打這篇文章的。如果沒有看到顏色,你可以用 M-x 
font-lock-mode 來啟動。M-x 意思是按住 Alt(Emacs 裡稱為 Meta 鍵) 以及 
x, 然後輸入 outline-mode,再按 [Enter] 即可。 

** 階層架構 
Outline mode 的階層架構是以幾個 "*" 符號來分隔的,就如同本文章一樣。一 
個星號("*") 的就是最高層,也就是類似簡介的例子中的 I, II, 等等,而兩個 
星號則是第二層,類似例子中的 A, B, 等等。但是要注意的是這些星號一定要 
在該行的最前面。如果沒有星號開頭的就是該層(或稱為該標題)下的本文。 

** 顯示及隱藏標題與本文 
*** 隱藏 
想要隱藏某個標題下的全部文字,你可以選擇目錄選單『Hide->Entry』,你可 
以將游標移到這裡,然後選擇『Hide-Entry』,如果你沒有看到選單,你可以直 
接輸入 C-c C-c (連續兩個 Control C)。好,現在就輸入 C-c C-c 

*** 顯示 
別急別急,看不到隱藏的文字了?先看看隱藏兩字後面是不是出現了三個句點 
"..."? 那就表示那個標題以下的文字被隱藏了。你可以用目錄選單 
『Show->Entry』來回復剛剛的文字,或是按 C-c C-e 來顯示隱藏的文字。 

*** 在標題間移動 
有的時候你會想要在同個層級的標題間移動,這樣比較方便寫作。那麼你可以使 
用『Headings->Previous Same Level』,或是按 C-c C-b 到前一個同層級的標 
題。如果你照指示的話,你會看到現在游標停在『顯示』那一行上面。如果要上 
一個層級,你可以選擇『Headings->Up』,或是 C-c C-u, 如果你照做的話,你 
的游標現在會是在『顯示及隱藏標題及本文』那一行。 

* 結語 
有沒有搞錯?這麼快就要結束了?沒錯,我已經把主要功能介紹完了,其他的功 
能,請自行看下拉式選單,全部都在 Headings, Show, Hide 裡面。或是找 
Emacs manual 裡的 Outline Mode 一節,有更詳盡的說明。 

大綱模式是一個很小,但很方便的功能。筆者曾經有一次要做 simulation 
program 的除錯, 我把所有的 events 全部輸出到一個檔案裡,但是 events 很 
多啊,那可是上千上萬的。Events 有分不同的層級,上層的是比較高階的動作, 
下層是比較細節的動作,如果分層輸出到不同個檔案可以解決 events 太多的問 
題,但是卻比較不容易看出不同層級的時間先後。於是筆者便將 events 依照層 
級在那一行的最前面加上星號,全部輸出到一個檔案裡(最後還是有分檔案啦, 
不過是五千個 events 一個檔案,而不是分層級)。這樣,我就可以分顏色看到 
events 的層級,我也可以顯示或隱藏某一個 events 以下做的事,要找下一個 
同層級的 event 也很快。如果你想照做,筆者提醒你,Windows 版的Emacs 處 
理這樣大的檔案會頗慢的,這也是筆者改用 Linux 的原因之一。 

No comments: