ESC를 한 번만 누르면 emacs가 미니버퍼를 종료하게 만드는 방법은 무엇입니까?

ESC를 한 번만 누르면 emacs가 미니버퍼를 종료하게 만드는 방법은 무엇입니까?

나는 종종 잘못된 키 조합을 눌러 일부 모호한 미니버퍼 모드를 엽니다. ESC를 세 번 눌러야 하는데(제 생각에는) 꽤 짜증스럽습니다. ESC를 한 번만 눌러 emacs가 미니버퍼를 종료하도록 하려면 어떻게 해야 합니까?

답변1

모든 아이디어에 감사드립니다. 이것이 트릭을 수행해야 할 것 같습니다:

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

isearch에서만 작동했습니다. 모든 단일 함수(smex, ibuffer 및 미니버퍼를 사용하는 기타 모든 함수)에 대해 다시 바인딩해야 할 것 같습니다.

답변2

나는 그것을 믿는다에르고에맥스ESC원하는 방식으로 키를 사용합니다 . 또한 다른 Emacs 키 바인딩도 많이 변경하지만 아마도 "긴 emacsy 키 누르기를 피하려는" 바람에 동의하는 방식일 것입니다.

[경고: 저는 ergoemacs 전문가는 아니지만 그렇습니다.~ 아니다그 방법을 사용하는 것이 좋습니다 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))

이것은 각 미니 버퍼에 대해 로컬 키 맵을 사용하기 때문에 각 명령의 키맵에 대해 이를 다시 바인딩할 필요가 없습니다. 로컬 맵은 일반적으로 미니버퍼 명령이 수행하는 모든 작업보다 우선합니다.

관련 정보