1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Emacsを使う理由(3): dmacro+multiple-cursors

Last updated at Posted at 2025-12-13

はじめに

  • ファイル編集において昔は「漢は黙って正規表現で一発置換!」とか今は「AIに編集してもらえればいいじゃん」と思いつつも、頭を使わず指先で解決させることが多いです
  • vなんとかエディタのほうが得意な領域かもですが、dmacroやmultiple-cursors+phi-searchの使い心地には及ばないんじゃないかと思ってます
  • dmacroは再実行マクロ(1993〜! Masuiさん! :sweat_smile:)で、multiple-cursorsは複数カーソル編集(2012〜)

つまり:

  • 繰り返しの編集を自動検出 して再実行したり、
  • 複数カーソルで 同時に複数箇所を編集 するのは、
  • VSなんとかエディタ(2015〜)がない時代は Emacs一択 でした

dmacro (再実行マクロ)

(package-install 'dmacro)
(defconst *dmacro-key* "\C-t" "繰返し指定キー")
(global-set-key *dmacro-key* 'dmacro-exec)
(autoload 'dmacro-exec "dmacro" nil t)

同じような操作をしてると思ったら C-t を連打

multiple-cursors (複数カーソル)

(package-install 'multiple-cursors)
(package-install 'phi-search)

(setq mc/always-run-for-all t)

(global-set-key (kbd "C-S-n") 'mc/mark-next-like-this)
(global-set-key (kbd "C-S-p") 'mc/unmark-next-like-this)
(global-set-key (kbd "C-S-m") 'mc/mark-all-words-like-this)
(global-set-key (kbd "C->") 'mc/mark-all-like-this-dwim)

実際 C-S-n しか使ってないです。
例えば上記ソースで mc/ を編集したい時はC-S-nを4回打ってカーソルを増やして、C-smc/を探すといい感じな場所で編集できます。
矩形選択とかまったく使わなくなりました。

他の小ネタ

move-text (行移動)

(package-install 'move-text)

(global-set-key (kbd "M-N") 'move-text-down)
(global-set-key (kbd "M-P") 'move-text-up)

move-textは行移動のパッケージですが、全然使ってないですね。。

wgrep / wgrep-ag (grep結果を直接編集)

(package-install 'wgrep)
(require 'wgrep)
(add-hook 'grep-mode-hook
          '(lambda ()
             (define-key grep-mode-map "r" 'wgrep-change-to-wgrep-mode)))

(package-install 'ag)
(package-install 'wgrep-ag)
(autoload 'wgrep-ag-setup "wgrep-ag")
(add-hook 'ag-mode-hook 'wgrep-ag-setup)
(add-hook 'ag-mode-hook
          '(lambda ()
             (define-key ag-mode-map "r" 'wgrep-change-to-wgrep-mode)))
  1. M-x grepM-x agで検索
  2. 検索結果バッファでrを押す
  3. 検索結果を普通のバッファとして編集
  4. C-c C-cで変更を全ファイルに反映

いわゆる、複数ファイルへの文字列置換で、昔はこれを使うぐらいだったら Perlsed を使ってましたし、AI時代ではめっきり出番がなくなっていますが、いざという時は頼りになります。

indent-and-next-line

(defun indent-and-next-line ()
  (interactive)
  (indent-according-to-mode)
  (next-line 1))

(global-set-key "\M-n" 'indent-and-next-line)

現在行をインデントしながら次行へ移動M-nの連打が体に染み付きすぎて、本当に他の環境でファイルを編集したくないです。

hungry-delete

;;(package-install 'hungry-delete)

バックスペースや削除キーで 空白をまとめて削除できるらしい!が、標準キーの M-\ (カーソル前後の空白を削除)を越えられなくて使ってない。

zop-to-char

(package-install 'zop-to-char)
(global-unset-key (kbd "C-z"))
(global-set-key (kbd "C-z") 'zop-to-char)

C-z 文字 で、指定した文字まで削除できる!なんかすごそうでいれたけどまったく使っていない

まとめ

やはり、たまに無理矢理でも記事を書こうとすることで(LLM頼りではありつつも)、自分の設定を見直すことができてよいですね。
Emacsは常に昔から、そして今でも最先端の編集環境であることに、興味を持った方はぜひ試してみてください :bow_tone1:

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?