바보

바보

기본적으로 다음과 같이 명령 프롬프트에 정보를 입력할 때 mutt프롬프트 지우기를 사용할 수 있습니다 .Ctrlg수동:

^G 해당 없음 정지

이 함수 를 Escape.abort수동또는원천.

나는 내에서 시도 .muttrc:

바인딩 편집기 <esc>가 중단되었습니다.

하지만 오류가 발생합니다.

/home/jason/.mutt/muttrc의 오류, 143행: 중단: 맵에 해당 기능이 없습니다.

( )와 같은 다른 지도를 사용해 보았고, generic예를 들어 다른 가상 함수도 시도해 보았 clear으나 아무 소용이 없었습니다.

Escape프롬프트 줄을 지우려면 어떻게 바인딩해야 합니까 ?

답변1

바보

이는 키 바인딩을 사용하여 불가능합니다. Ctrl-G매크로 또는 키 바인딩 처리보다 낮은 수준에서 mutt에 하드코딩되었습니다( mutt_getch()mutt에서 오류를 반환하는 모든 사용자 입력의 핵심인 mutt의 소스 코드 참조 ^G).

macro editor \e '^G'

아니요.

^G당신이 할 수 있는 일은 눌렀을 때 전송 되도록 터미널을 구성하는 것입니다Escape

xterm 사용:

xterm -xrm 'XTerm.VT100.translations: #override <KeyPress> Escape: string(0x7)'

다음을 사용하는 경우에도 screen이 작업을 수행할 수 있습니다.

screen -X bindkey $'\e' stuff $'\a'

mutt를 호출하기 전과 그 후에 복원합니다(불행히도 화면의 각 화면 창에 대한 키 바인딩을 가질 수 없는 것 같습니다). 또한 이메일 편집기가 vi인 경우에도 문제가 됩니다.

네오무트

출시 이후20200313$abort_key기본값을 변경하는 구성 변수가 있습니다 Ctrl-G.

답변2

나에게는 탈출을 바인딩하는 것도 매우 나쁜 생각처럼 보입니다 ControlG. 저는 하이브리드 솔루션을 찾기 위해 여기에 왔지만, 그런 솔루션이 없는 것 같기 때문에 이 질문을 우연히 발견하는 분들을 위해 제가 하고 있는 일에 대한 답변을 제공하겠습니다. 이는 최적은 아니지만 다른 프로그램에는 영향을 미치지 않습니다.

macro editor \e "<enter><shell-escape>xdotool key control+g<enter>"

또는

macro editor \e "<enter><shell-escape>xsendkey Control+g<enter>"

xdotool 또는 xsendkey와 같은 것을 사용하여 control+g를 가짜로 만드는 것은 작동하며 다른 곳에서 탈출하는 것을 방해하지 않습니다. 줄 편집기를 종료할 때 시각적 지연이 있지만 인덱스 바인딩은 즉시 작동하며 인덱스 바인딩을 사용하면 시각적 지연이 사라집니다. 첫 번째 입력이 필요하므로 mutt는 "...."만 입력하고 제목이나 검색어 등에 입력하지 않습니다.

답변3

NeoMutt의 경우 버전 2020-03-13부터 다음을 수행할 수 있습니다.

set abort_key = "<Esc>"

또한 다음과 같이 시작 스크립트에도 다음 줄을 추가하는 것이 좋습니다 .bashrc.

export ESCDELAY=0

이유, 인용여기, 예

중단 키로 사용될 때 환경 변수 ESCDELAY를 더 낮은 값이나 심지어 0으로 설정할 수도 있습니다. 그러면 ncurses가 터미널 이스케이프 시퀀스의 시작과 단일 키 누름을 구별하기 위해 기다리는 시간이 줄어듭니다. 기본 시간은 1000밀리초이므로 매우 눈에 띕니다.

이 옵션을 지적해준 @Stéphane Chazelas에게 감사드립니다 abort_key. 청중에게는 별도의 자세한 답변이 제공되는 것이 더 나을 것이라고 생각합니다.

답변4

이 해결책은 너무 나빠서 작성자는 이를 제거하기 위해 Mutt의 소스 코드를 편집하는 편이 낫습니다. ^G

Ctrl경고: 이 솔루션은 OSX, Emacs 및 +를 사용하는 기타 응용 프로그램과 호환 되지 않는 것으로 보입니다.G

Mutt에서의 첫날 이후 Vim에서 ^G를 거의 실수로 사용할 뻔했습니다. 그런 다음 Vim에서 작동하는 것처럼 보이는 것을 시도했습니다.i3 창 관리자그리고xfce 터미널.

다음 줄을 추가하세요 ~/.i3/config.

bindsym --release Escape exec --no-startup-id xvkbd -xsendevent -text "\[Escape]\[Control]\[g]"

Vim에서 작동이 중단될 "\[Escape]\[Control]\[g]"수 있으므로 이를 사용해야 했습니다 ."\[Control]\[g]"

i3를 사용하지 않는다면 사용해도 될 것 같습니다.xbindkeys누르면 실행됩니다 xvkbd -xsendevent -text "\[Escape]\[Control]\[g]".Esc

그것은 좋은 해결책이 아닙니다. Esc일부 프로그램에서는 키를 사용할 수 없게 될 수도 있지만 적어도 여기서는 괜찮아 보입니다.

편집하다:

Ctrl이제 + G부분을 사용하면 Vim이 파일의 위치를 ​​표시하게 된다는 것을 알 수 있습니다 . 아직 너무 극적인 것은 없습니다.

이 링크에는 더 나은 솔루션이 있는 것 같지만UrxVT: http://www.unixli.com/q/answers-urxvt-map-esc-key-to-key-sequence-83211.html

관련 정보