[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
自分でわざわざプログラムを書くほどではないけど,簡単な繰り返し作業などを効率的に 行いたいということがあります.
そんな時にはマクロが便利です.これは自分の操作手順をそのまま登録し,その作業を簡 単に繰り返すことはできるのです.
そこで,ここでは,マクロについて紹介します.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
キーボードマクロを使うと,キー操作をそのまま登録して,操作を簡単に繰り返すことが できる.
定型的な作業の時,全く同じ操作を延々と繰り返すことがあります.こんな時,毎回同じ 操作をするのは非常に面倒です.
実際にキーを操作して,その作業をそのまま登録することができます.
そして,その後で,その作業をそのまま,簡単に簡単に繰り返すことができます.
Meadowの標準機能です.
不要です.
まず,f3 を入力します.すると,ミニバッファに
Defining kbd macro...
と表示されます.ここで,繰り返したい作業を実際に行います.そして,終了したら, f4 を入力します.すると,ミニバッファに
Keyboard macro defined
と表示され,キーボードマクロが定義されました.
次に,f4 を入力すると,定義した作業が実行されます.
キー入力時の補足ですが, 1 個だけ特別なキーがあります.C-x q です.これを途 中で入力すると,それ以降のマクロを実行するかユーザに確認を求めるようになります. 例えば,あるところまでは常に実行したいけど,そこから先は自分で判断したい時などに は,操作の切れ目で C-x q と入力しておくと便利です.
f3 と f4 で定義したマクロに名前をつけることができます.そのためには, マクロを作ったら M-x name-last-kbd-macro を実行して名前をつけます.こうして おくと,普通の関数と同じように M-x で呼び出すことができます.
ただし,このマクロは Meadowを終了すると消えてしまいます.そこで,保存しておきたい マクロができたら M-x insert-kbd-macro として書き出し, .emacs に追加してお くといいでしょう.
まず C-x C-k e と入力します.そうすると,ミニバッファに
Keyboard macro to edit (C-x e, M-x, C-h l, or keys):
とでます.ここで,C-x e か M-x,C-h l を押します.ただし, 15.6.1 キーバインドについて (2004/01/30) のように C-h に DEL を割り当てているとC-h l は使えません.M-x は一度名前を定義しないと使えませんので,ここではC-x e と入力します.
そうすると,ミニバッファに
No Keyboard macro defined. Create one? (y or n)
のように表示されます(f3 と f4 であらかじめ定義していれば,これは聞か れません).ここでは,y と答えます.すると,以下のようなバッファができます.
;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel. ;; Original keys: Command: last-kbd-macro Key: none Macro:
後は簡単.そのまま,キー入力を書いていけばいいのです.編集が終わったら,C-c C-c で保存します.キャンセルは C-x k です.その後で,C-x e を押すと, ここで書いた処理が実行されます.
例えば
;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel. ;; Original keys: Command: last-kbd-macro Key: none Macro: 3*C-k
のように,「3*C-k」と書きます.すると,f4 でキーボードマクロを実行すると, 3度 C-k を入力したことと同じ作業,つまり,3 行消す作業を実行できます.こう いう風に * を使うことで多数回の繰り返しも簡単にできます.
また,
C-x C-f ~/.emacs M-<
といったマクロも可能です.
凝ったことをやろうとすると,emacs lisp を書かないとできませんが,簡単なことならキー ボードマクロで結構簡単にできます.
46.1.1 キーボードマクロを Lisp に変換 ― macro-generate (2005/03/24) 46.1.2 マクロを各行に適用 ― macros+.el
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
定義したキーボードマクロを簡単に EmacsLisp の関数に変換できる.
通常,キーボードマクロを保存すると,
(fset 'mkbd-macro [?\C-a ?\; ?\; ? down]) |
のように,キー操作がそのまま書かれ,あまり見栄えがよくありません.
上記のマクロを
(defun mkbd-macro () "my macro. macroised by akihisa Thu Mar 24 14:49:04 2005" (interactive) (beginning-of-line 1) (insert ";; ") (next-line 1) ) |
のような関数に変換できます.
インストールしていませんので,インストールと設定が必要です.
macro-generate.el をダウンロードし,Emacs Lisp 以外の部分は削除(あるいは,コメントアウト)した上で, ロードパス上に置きます.
以下を .emacs に追加します.
(autoload 'gen-start-generating "macro" nil t) (autoload 'gen-stop-generating "macro" nil t) |
M-x gen-start-generating でキーボードマクロの定義を開始します.普通のマク ロと同様にキー操作を行います.そして,M-x gen-stop-generating で終了します.
次に,M-x gen-expand-macro とます.すると,ミニバッファで書き出すバッファ を求められます.
Buffer for expansion : (default test.el)
次に関数名を入力します.
New function name :
次に関数の簡単な概要を入力します.
Doc string :
これで,指定したバッファの末尾に,関数が挿入されます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
リージョン内の各行にマクロを用いて簡単に整形を行うなどといった操作を簡単に行うこ とができます.
多くの行をコメントにしたいなど,マクロを用いて行いたい操作があるとします.
しかし,行が多くなると,マクロで実行するためには,何度もマクロを実行する必要があ り,面倒です.
マクロを適用したい行をリージョンで選択し,コマンドを実行するだけで,リージョン内 の各行にマクロを実行できます.
インストールしていませんので,インストールと設定が必要です.
macros-plus.el をダウンロー ドし,macros+.el の名前でロードパスの通ったところへ置きます.
以下を .emacs に追加します.
(eval-after-load "macros" '(require 'macros+)) |
まずはマクロを定義します.そして,そのマクロを使いたい範囲をリージョンで選択しま す.
次に,M-x apply-macro-to-region-lines を実行します.すると,リージョン内の 各行を対象に,マクロを実行できます.
マクロを何度も繰り返す必要もなく,便利です.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
カーソル移動など1キーで実行できるコマンドは簡単に繰り返し実行することができる.
キーボードマクロは便利なんですが,登録という手間がかかります.
直前の操作を簡単に繰り返したり,コマンドによっては,指定した回数だけ実行させるこ とができます.
標準機能なためインストールも設定も不要です.
10.4.1 関数への引数 ― C-u (2003/11/24) で少し紹介しましたが,一部のコマンドは C-u 10 のようにして 実行すると 10 回繰り返すことができます.例えば,C-u 10 C-f で 10 文字先へカー ソルを移動できます.
例えば, C-kとした後で, C-x z とすると, 直前のコマンド C-k が実 行されます. その後, z を押すと, 連続して C-k が実行されます.
例えば,C-u 5 C-f C-x zzzz とすると, z を入力するだけで,5 文字ずつ 移動できるようになるわけです.
46.2.1 繰り返し処理の自動繰り返し ― dmacro (2005/03/24)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
複雑な繰り返し操作でも自動で検出し,簡単に操作を繰り返すことができます.
C-k やC-f のように単純なことならいいのですが,
┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐ └─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘
という絵を書く時に, いちいち書いていくと面倒です.
かといって,その都度,マクロを登録していくのも面倒なものです.
繰り返し操作を自動的に検出し,簡単に繰り返すことができます.
インストールと設定済みです.C-t に割り当てています.
http://www.csl.sony.co.jp/person/masui/papers/JSSSTDmacro/dmacro.el?04291400,dmacro.el よりダウンロードし, ロードパスの通ったところへ置きます.
以下を.emacs に追加します. キーバインドは適当に変更してください.
(defconst *dmacro-key* "\C-t" "繰返し指定キー") (global-set-key *dmacro-key* 'dmacro-exec) (autoload 'dmacro-exec "dmacro" nil t) |
例えば,
┌─┐ ─ └─┘
の後で, C-t とするだけでどんどん繰り返していけます.
他にも,
1行目 2行目 3行目 4行目
に対して,1行目にカーソルを移動し,C-a ;; SPC 下カーソルキー C-a とすると,
;; 1行目 2行目 3行目 4行目
となり,カーソルは2行目に移動します.ここで,C-t とすると,行った操作が C-a ;; SPC 下カーソルキー C-a ですので,dmacro は C-a から始まる部分 から,次の C-a の直前までが繰り返し作業だと判断します.
その結果,C-t だけで簡単に各行をコメントにすることができるのです.
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |