Language

Showing posts with label outline mode. Show all posts
Showing posts with label outline mode. Show all posts

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 的原因之一。