Emacsでカーソル移動、削除、マクロ実行などを繰り返したいときに手軽なのがC-u
。C-u
の後に数字を入力すればその回数になるが、単にC-u
だと4回、C-u C-u
と2度押すと16回、3度押すと64回、という具合に、n度押すと4n回繰り返される。数字キーに手を伸ばさなくていいのですばやく操作できる。
しかし。4の次が16って飛びすぎじゃね?4回というのは「目の届く」「小さい範囲の」繰り返し回数として適度だが、16回となるといきなり「だいたいこのあたりぜんぶ」「もっとたくさん」といった鷹揚なニュアンスである。昔から「いち、にい、たくさん」と言うではないか。ナベアツもイチ、ニ、サン!で初めてアホになる。
というわけで、4, 8, 16, 64, 256, …のように8を挟むようにしてみた。
1 2 3 4 5 6 |
(defadvice universal-argument-more (before stop-by-eight-before-sixteen (arg) activate) "Stop by eight before sixteen." (and (consp arg) (let ((num (car arg))) (if (> 16 num) (ad-set-arg 0 `(,(/ num 2))))))) |
使ってみると、これがけっこうしっくり来るんだな。C-u C-u
だと多すぎだからC-u
+コマンドを2回、というシーンはけっこうあるので、4から16と急加速する前に8を。スペースを8個削るとか、8行分コピーするとか、なかなか手頃なサイズです。
このなかなか表面化しないフラストレーションを言葉にしてくれた同僚のK君に感謝。
2013-12-04追記: (consp arg)
条件を加えないとC-u 1 0 C-u 1
で1を10個入力できなくなるので修正。