[轉錄]Emacs etags 簡介

看板SFFamily作者 (iiew)時間20年前 (2004/03/12 21:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 Linux 看板] 發信人: Jiun-jie Huang <jjhuang@cm.nctu.edu.tw>, 看板: Linux 標 題: Emacs etags 簡介 發信站: National Tsing Hua University (Fri Mar 12 02:52:54 2004) 轉信站: ptt!ctu-reader!news.nctu!not-for-mail etags 簡介 -*- Outline -*- * 前言 有許多的 IDE(Integrated Development Environment) 都提供了函數名稱的 自動完成功能( 亦即,輸入前面幾個字元之後,編輯器可以自動幫你完成後面 的函數名稱)。Vi 裡面有 ctags 可以做到這件事,那麼 Emacs 呢?答案是 etags. 在這篇文章裡,我會簡短的介紹如何使用 etags. * etags 使用方法 ** 建立函數及關鍵字列表 在使用之前,你必須先在你的發展環境目錄底下建立列表; 假設你的發展環 境目錄名稱叫做 /path/to/developer/, 建立列表的方法如下: % cd /path/to/developer/ % etags *.h *.c 這樣就建立完成了,根據 etags/ctags 的手冊, etags/ctags 可以處理的語 言有 C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang, LaTeX, Emacs Lisp/Common Lisp, makefiles, Pascal, Perl, Postscript, Python, Prolog, Scheme and most assembler-like syntaxes. 預設的列表檔名是 TAGS. ** 把函數及關鍵字列表讀進 Emacs 開始用 Emacs 編輯檔案, 比如說你正在編輯 foo.c, 你先用 C-x C-f 把 foo.c 讀進來之後,你需要使用 etags 的功能,那麼你就執行 M-x visit-tags-table <RET> /path/to/developer/TAGS <RET> 把 /path/to/developer/TAGS 檔案讀進來。註:<RET> 表示 Return 鍵,或 是在鍵盤上通常標示為 Enter. ** 在 Emacs 中搜尋函數內容 有的時候我們會想要直接跳到某個函數裡面去修改他的內容,你可以使用 M-. (沒錯,就是 Meta 跟一個句點) 然後輸入函數名稱就會跳到該函數的 code 那裡去; 如果你按 M-. 的時候游標指著一個函數名稱,你可以在輸入 函數名稱的時候直接按 <RET> 即可跳到該函數源碼的地方。跳過去之後,如 果你想要回來原來地方,你可以用 M-* 來做到。 如果你想要在另一個視窗內看到該函數源碼,而不是你現在的這個視窗(對照 方便), 那麼你可以用 C-x 4 . TAG <RET> 來達成這件事。 如果你要搜尋某些函數與關鍵字,你可以用 M-x tags-search 的功能,這個 可以用 regular expression 來搜尋。當你用 M-x tags-search <RET> REGEXP <RET> 之後,你可以用 M-, (Meta 逗點), 找下一個搜尋到的函數名 或關鍵字。 ** 函數及關鍵字自動完成 etags 並沒有提供函數及關鍵字自動完成(auto-completion)的功能, 但是 Emacs 有提供一個功能可以達成這件事,叫做 dynamic abbreviation expansion. 這個功能事實上是把去找在開啟的 buffer 裡面有那些字串是你 輸入字串的完整字串,而 TAGS 列表就在一個 buffer 裡面,所以可以達成 函數及關鍵字自動列表。當你輸入一個函數名稱或是一個變數名稱的前面幾 個字母,比如說: foo-, 然後按 M-/, 這時候 Emacs 會把所有可能的字串找 到,並把第一個可能的字串直接完成,所以你按了一次 M-/ 之後可能會變成 foo-bar-function, 你繼續按 M-/ 可以變換成其他可能的字串,直到沒有為 止。或者是你也可以按 C-M-/, 這時候 Emacs 會像其他時候的 auto-completion 的行為一樣,跳出一個視窗把所有的可能列表列出來給你 選擇。 * 結語 當我開始使用 etags 的功能之後,我就沒有辦法不用這個功能了,因為實在 是太方便了。etags 也可以幫你自動完成標準函式庫裡的名稱,只要你在 etags 的時候把 /usr/include 裡的表頭檔案也包含進來就可以了。etags 還 有其他比較進階的功能,我沒有一一列出來,有興趣的人可以去看看 M-x info 裡的 Emacs 手冊。最後我做一個這次提到的功能列表,供讀者參考用。 * 按鍵列表 M-x visit-tags-table <RET> TAGS-file <RET> 把 TAGS-file 檔案讀進 Emacs M-. TAG <RET> 尋找函數或關鍵字定義的源碼 C-x 4 . TAG <RET> 在另一個視窗尋找函數或關鍵字定義 M-* 回到尋找關鍵字定義之前的地方 M-x tags-search <RET> REGEXP <RET> 用正規表示式搜尋函數或關鍵字定義 M-, 找下一個搜尋到的函數或關鍵字 M-/ 自動完成可能的函數或關鍵字 C-M-/ 列出所有函數或關鍵字名稱的自動完成列表 -- Jiun-jie Huang, aka Albert E-mail: jjhuang AT cm.nctu.edu.tw 黃俊傑 Department of Computer Science National Tsing Hua University MIME/ASCII/PDF/PostScript are welcome! HsinChu, Taiwan NO MS WORD DOC FILE, PLEASE! -- 我愛用UD 我希望Blizzard可以讓nec招換出來的骷髏兵強壯一點 最好身高一米九 一拳三百磅 不然骷髏兵實在太廢~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.107.243
文章代碼(AID): #10KRnv2z (SFFamily)