こんにちは!
EmacsのDiredにはdired-dwim-target
という変数があります。これをt
に設定しておくと、複数のDiredバッファを開いてる際、ファイルのコピーや移動をしようとすると、空気を読んで(do what i mean)別のバッファがコピーや移動の対象として選択されます。
とても便利なのですが、たまに「いや、今は空気を読まずに自分のバッファで操作して」ってときありませんか?
自分の場合そういう時、一旦別のバッファに移動・コピーしてから、移動先のバッファに移ってもう一度元のバッファに戻してました... (皆さんはどうしてるんでしょう?)
universal arguments (C-u) をつけた操作でdired-dwim-target
の効果が切り替わってくれるとEmacsぽいかなと思って試してみたのですが、そんな都合よく切り替わってはくれませんでした🤷
何か良い方法がないかdired-dwim-target
のドキュメントを読んでみると、どうやらこの変数には関数もセットできるようです。ということは
(setq dired-dwim-target (lambda () (if current-prefix-arg nil (dired-dwim-target-next))))
とすれば自分が期待する挙動になりました!これでデフォルトではコピー・移動先を推測してくれて、C-u
をつけた時だけ今いるバッファが対象になります!
以上です!他にもっといい設定あるよ、とか間違ってる点などあればご指摘頂けると嬉しいです