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 はできません

単純ですよね. でも意外に役に立ちますよ.








役に立たないので戻る