t

メモ

Incremental Search + Multiple Cursors

「複数カーソル」というものが便利だと教わった。調べてみたところ multiple-cursors.elsmartrep.el を使えば Emacs でも似たようなことができそうだったので、真似をしつつ設定を追加してみた。

まずは isearch-forward した状態から mc/mark-next-like-this したい。

(define-key isearch-mode-map (kbd prefix)
  #'(lambda ()
      (interactive)
      (push-mark isearch-other-end t 'activate)
      (isearch-exit)))
(smartrep-define-key global-map prefix ...)

これだと prefix を押さなければいけない回数が多くて嬉しくないのだけど、さしあたり良い案を思いつけなかった。

あとは選択状態に合わせてスクロールさせたい。これは mc/cycle-forwardmc/cycle-backward を呼ぶだけなので易しい。

(defun mc/mark-next-like-this-and-cycle-forward ()
  (interactive)
  (mc/mark-next-like-this 1)
  (mc/cycle-forward))
(smartrep-define-key global-map prefix
  '(("C-v" . 'mc/cycle-forward)
    ("M-v" . 'mc/cycle-backward)
    ("n"   . 'mc/mark-next-like-this-and-cycle-forward)
    ...))

ついでにsmartrepによるコマンド実行中はキー入力をエコーしないようにしたら快適だった。