先日のEmacs Advent Calender の5日目の記事
Emacsでリファクタリングに超絶便利なmark-multiple (複数行同時編集) - ブログのおんがえし
で大変素敵なmark-multiple.el (実際はmultiple-cursors.elの下位互換)が紹介されていた.
multiple-cursors.elについて知りたい方は以下の動画を見るのが早いだろう.
本稿ではmultiple-cursors.elのキーバインドの設定例について少しだけ書く.
上記記事の中で,キーバインドの例として
(global-set-key (kbd "C->") 'mark-next-like-this) (global-set-key (kbd "C-<") 'mark-previous-like-this)
などが紹介されていたが,このキーバインドは押しづらい気がしなくもない.
自分だけかもしれないが.
そこで@myuhe氏のsmartrepを使って連続入力をしやすくしたのが以下の設定例である.
(require 'multiple-cursors) (require 'smartrep) (declare-function smartrep-define-key "smartrep") (global-set-key (kbd "C-M-c") 'mc/edit-lines) (global-set-key (kbd "C-*") 'mc/mark-all-like-this) (global-unset-key "\C-t") (smartrep-define-key global-map "C-t" '(("C-p" . 'mc/mark-previous-like-this) ("C-n" . 'mc/mark-next-like-this) ("u" . mc/unmark-next-like-this) ("U" . mc/unmark-previous-like-this) ("s" . mc/skip-to-next-like-this) ("S" . mc/skip-to-previous-like-this) ("*" . 'mc/mark-all-like-this)))
上記により,C-tの後にC-nやC-pを続けて押せば同記事と同様の操作が可能である.
上記はあくまで設定例であり,気に入らない場合はご自由にカスタマイズされたし.
追記
以下のregion-bindings-modeを用いればsmartrepの設定は実は必要なかったりする。
region-bindings-modeの紹介 - 備忘録
追記2
multiple-cursors.elの作者自身も紹介しているように,multiple-cursors.elはexpand-region.elとの相性がよい.
以下のページの設定を試してみるのもよいだろう.
mc/mark-all-dwimの改良ネタ - 備忘録
追記3
smartrepのソースはここ.https://github.com/myuhe/smartrep.el
追記4
複数箇所同時編集という意味で,auto-highlight-symbol-modeというのも存在する.
詳細はemacsでカーソル位置のシンボルをハイライトする - brainstormが参考になる.
追記5
iedit-modeというものも,複数箇所同時編集可能である.
詳細は
複数箇所を同時に編集可能にする iedit の紹介 - 備忘録
を参考に.
ソースはvictorhge/iedit · GitHubにある.