repeat
repeat
文字通り, 直前のコマンドを繰り返すコマンドです.
何が素晴らしいかといえば, 前置引数を含めた繰り返しができるということです.
例えば, 10 文字右に行こうとして
C-u 1 0 [right]
と打ったとしましょう. 直後に repeat を実行すれば更に 10 文字進むことができますし,
勿論 repeat を repeat することだってできます.
デフォルトでは C-x z というバインドになっているのですが, 是非変えるべきです.
C-x z z z ... のように打てば連続 repeat できるみたいなんだけど, そもそも最初の
repeat が打ちにくいので魅力半減です. 1 ストロークにバインドしましょう. 「れんぞ
くま」でアルテマ 2 連発したらゴゴに「ものまね」させてたでしょう(笑) ?
あと,
(setq repeat-message-function 'ignore)
としておかないと, repeat する度に echo されるので, minibuffer で打ってるときは煩
いことになります.
real repeat
(defun my-repeat (arg)
(interactive "p")
(unless (eq real-last-command this-command)
(let ((i 0))
(while (< i arg)
(repeat 1)
(setq i (1+ i))))))
repeat にも前置引数を取ることができますが, その引数は repeat する関数に渡されて
しまいます.
どういうことかというと, 普通に yank したあとにそれを 100 回 repeat させようとし
て universal-argument で 100 としてから repeat しても, その引数は yank に渡されてしまうので
kill-ring が 100 回まわってから yank が実行されるだけです. つまり, yank
自体は1回しか実行されません. さみしいです.
上のやつはそれをせず純粋に repeat だけを指定回数実行させるものです. ただしこの関
数自体を repeat はできません
単純ですよね. でも意外に役に立ちますよ.
役に立たないので戻る