歡迎您光臨本站 註冊首頁

Emacs中的鍵盤宏

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
      這 是 我 的 關 於 如 何 在 Emacs 中 讓 你 的 手 指少 動 幾 次 的 小 技 巧-- 使 用 Emacs 中 的 鍵盤宏 (keyboard macros)。在 你 編 輯 任 何 文 件 時( 如 C 源 程 序 時) 創 建 一 個 鍵 盤 宏 首 先鍵 入 `C-x (' , 當 小 緩 沖 器 顯 示`Defining kbd macro' 時, 鍵 入 任何 你 想 自 動 錄 入 的 字 符。 例 如 你想 錄 入 的 如 下:

  int main(int argc, char **argv)
  {

  當 你 結 束 錄 入 時 鍵 入:`C-x )' ,emacs 將 顯示`Keyboard macro defined' 。 現 在 你 必 須 給你 的 宏 命 名, 以 便你 以 后 調 用 此 宏, 鍵 入:`M-x name-last-kbd-macro' 時, 會 提 示 輸入 宏名。 在 我 們 的 例 子 中, 就 叫 做 `main-type' 之 類 的 吧。 現在 打 開 你 的 .emacs 文 件, 移 到文 件 尾 部, 鍵 入:`M-x insert-kbd-macro',當 它 問 你 插 入 宏 的 名 字 時, 鍵 入 你 上 次 取 的 名字。 此 時 emacs 就 會 自 動 插 入 生 成 宏 的 代 碼。


現 在 就 可 以 使 用 `M-x < 宏 名>' 來 調 用 你的 宏 了。 不 過 好 象 使 用 起 來 並 不 如 預 想的 好, 因 為 使 用 宏是 為 了 減 少 你 的 擊 鍵。 不 過 這 個 問 題 可 以 用 定 義 鍵 盤(keyboard mapping) 來 解 決。 下 一 步 是 把 此 宏 定 義 到 一 個 功 能 鍵 上。

依 你 是 否 需 要 此 宏 用 於 所 有 模 式, 你 可以 使 用 全 程 設 置 鍵 ( global-set-key) 或 定義 鍵 (define-key)。

下 面 是 一 個 全 程 設 置 鍵 的 例 子, 需 要 你把 它 加 入 到 ..emacs 的 尾 部。
  (global-set-key "\C-cm" 'main-type)

如 此, 以 后 你 調 用emacs 時, 只 要 你 鍵 入「C-c m」 時, 整 個 代 碼 (not really, just this one line) 就 會 顯 現。 請注 意 不 能 使 用 已 定 義 鍵。 最 合 適 組 合 鍵 是 Control C + .

如 果 你 只 希 望 此 宏 在 C 模 式(cc-mode) 時 使用, 在 你 的 c-mode-common-hook 中 鍵 入 如下:

(define-key c-mode-base-map "\C-cm" 'main-type)

在 第 一 種 模 式 中 的 問 題 是 你 只 有 有 限 的鍵 用 來 定 義, 很 快 就 會 用 完。 而 且, 當你 編 輯 一 個html 文 件時, 你 不 會 不 想 到 在 emacs 中 如 上 例 噴 出 'int main ' 的 方 法。


附 ?給 老 手: 應 該 指 出 的 是 我 只 是 emacs 的 新 手, 到 目 前 我 僅 僅 使 用 了 六 個 月。 如 上 有 誤 請 不吝 指 教。

資料來源:Linux公報中文版
(有話要說? 請給我們來信)




[火星人 ] Emacs中的鍵盤宏已經有668次圍觀

http://coctec.com/docs/linux/show-post-69674.html