ESC キーを 1 回押すだけで emacs のミニバッファを終了するにはどうすればよいでしょうか?

ESC キーを 1 回押すだけで emacs のミニバッファを終了するにはどうすればよいでしょうか?

よく間違ったキーの組み合わせを押してしまい、よくわからないミニバッファ モードが開いてしまいます。ESC キーを 3 回押す必要がある (と思う) のですが、これはかなり面倒です。Emacs で ESC キーを 1 回押すだけでミニバッファを終了させるにはどうしたらよいでしょうか。

答え1

皆さんのアイデアに感謝します。これでうまくいくはずです:

(define-key minibuffer-local-map (kbd "ESC") 'keyboard-escape-quit)

これは isearch でのみ機能しました。すべての関数 (smex、ibuffer、およびミニバッファを使用するその他のすべての関数) に対して再バインドする必要があるようです。

答え2

私はそれを信じていますエルゴエマックスキーを希望どおりに使用しますESC。また、他の多くの Emacs キー バインディングも変更されますが、おそらく「emacsy の長いキー押下を避けたい」という希望に沿う方法になります。

[警告: 私はエルゴエマックの専門家ではありませんが、ないESCそのように使用することをお勧めします。ESCは、Emacs で修飾子とキーマップに関して特別な役割を担っておりMeta、それ以外の方法で扱うと遅かれ早かれトラブルを招くことになります。(同様に、 はC-gEmacs の基本であり、場合によってはハードコードされているため、別のキーで 100% 置き換えることはできません。)]

答え3

通常、次のキーの組み合わせを使用します: Ctrl- X(コマンド モードに入る) K(Kill)、次にEnter

これにより、現在のミニバッファが削除されます。

答え4

おそらく必要なのは、minibuffer-setup-hookすべてのミニバッファのローカル マップで ESC をバインドするために使用することです。

(add-hook 'minibuffer-setup-hook (lambda ()
    (local-set-key (kbd "ESC") 'abort-minibuffers))

これは各ミニバッファにローカル キー マップを使用するため、各コマンドのキー マップに対して再バインドする必要はありません。通常、ローカル マップはミニバッファ コマンドが実行する内容よりも優先されます。

関連情報