入門GNU Emacs 第6章まとめ
- 6章
- マクロの記述
マクロの定義
キー操作 | 動作 |
---|---|
F3 or C-x ( | マクロ定義の開始 |
F4 or C-x ) | マクロ定義の終了 |
F4 or C-x e | 作成したマクロの実行 |
よいマクロを作るコツ
一般に、優れたマクロには次の3つの部分がある。
- 作業を開始する正しい位置を(通常は検索によって)見つける。
- テキストに対して実行する必要のある作業をする。
- 繰り返し実行されることに備える。
マクロの編集
キー操作 | 動作 |
---|---|
C-x C-k e | マクロを編集する |
C-c C-c | マクロ編集の終了 |
マクロリング
キー操作 | 動作 |
---|---|
C-x C-k C-d | 最後に作成されたキーボードマクロの削除 |
C-x C-k C-t | 1番目のマクロと2番目のマクロが入れかわる |
C-x C-k C-p | 以前に定義したマクロの順番を回転 |
C-x C-k C-n | 以前に定義したマクロの順番を逆回転 |
"C-x C-k"が、キーボードマクロのコマンドを表す。
マクロにキーを割り当てる
Emacsには、ユーザーが作成したマクロのためにあらかじめ"C-x C-k 0"〜"C-x C-k 9","C-x C-k A"〜"C-x C-k Z"のキー操作が予約されている。
"C-x C-k b"でマクロの割り当てキーを聞かれるので、ここで割り当てるキーを押す。
この方法で設定したキーバインドは、このセッション内でのみ有効となる。
マクロの名前付け、保存、実行
- (マクロが定義されていなければ)マクロを定義する
- C-x C-k nを実行し、マクロ名を入力する。ここで入力したマクロは、セッションを終了するまで"M-x 入力したマクロ名"で実行できる。
- 2のマクロが消えないようにするには、".emacs"もしくは".emacsから呼び出すよう設定されたマクロファイル"に保存する。"C-x C-f ファイル名 Enter"で定義を保存したいファイルを開き、M->で末尾に移動する。
- "M-x insert-kbd-macro Enter"を実行し、Lispコードに変換されたマクロを挿入する。
- .emacsファイルに、キーバインドを永続的に利用するための記述を追加する。例えば「transpose-names」という名前を付けて"C-x C-k T"キーを割り当てるなら以下のようになる。
- (global-set-key "\C-x\C-kT" 'transpose-names)
- マクロを.emacs以外のファイルに保存する場合、例えば~/macrosディレクトリ下の"html.macs"というファイルに保存したら、.emacsに次の行を追加することで自動的に読み込ませることができる。
- (load-file "~/macros/html.macs")
- .emacsファイル、もしくは別のファイルに挿入した場合はそのファイルを保存しEmacsを再起動する。
MacのCarbon Emacsで実際にマクロを保存してみたら、.emacsではなく.emacs.elに記述しないとダメなようでした。Macユーザーは.emacsを.emacs.elに置き換えてください。
8/5追記
.emacs.elと.emacsでは読み込み優先順位が違うのが原因でした。
Emacsのスタートアップファイルの読み込み優先順位
複雑なマクロの作成
マクロの一時停止とキーボード入力
キー操作 | 動作 |
---|---|
C-u C-x q | マクロ定義中に、再帰編集を挿入する |
C-M-c | 再帰編集を終了 |
問い合わせの追加
キー操作 | 動作 |
---|---|
C-x q | マクロ定義中にユーザーに問い合わせを行う |
マクロを実行すると、C-x qを挿入した位置で問い合わせが行われる。
キー操作 | 動作 |
---|---|
y | そのまま実行。繰り返し実行が指定されていれば、次の繰り返しを実行 |
n | マクロの実行が中止されるが、繰り返し実行が指定されていれば、次の繰り返しを実行 |
Enter or C-g | マクロの実行が中止されて繰り返し作業もすべてキャンセル |
C-r | 再帰編集の開始。編集の終了にはC-M-c。その後実行を継続するか尋ねられるので、継続するならyを、しないならnかEnterを押す。 |
C-l | カーソル位置の行が画面中央に表示される(前後の文脈を見たい時に便利)。 |
今回はマクロについてでした。
マクロを使って平文をはてな記法(表組みとか)に整形する処理を自動化してみたら便利すぎwww