mutt에서“clear prompt”리 바인딩


9

기본적으로에 명령 프롬프트에서 정보를 입력 할 때 매뉴얼에 설명 된 mutt대로을 사용하여 프롬프트를 지울 수 있습니다 .Ctrlg

^ G 해당 없음

이 함수를에 바인딩하려고했습니다 Escape. 불행히도, abort사용 가능한 기능, 매뉴얼 또는 소스에 나와 있지 않습니다 .

내에서 이것을 사용해 보았습니다 .muttrc.

바인드 편집기 <esc> 중단

그러나 오류가 발생합니다.

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

( generic)와 같은 다른지도를 사용해 보았으며와 같은 다른 가상 함수를 사용해 보았습니다 clear.

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


1
탈출 바인딩 (탈출을 눌렀을 때 전송) 제어 문자로서 좋은 아이디어 아니다 또한 델 화살표와 같은 모든 기능 키, F1 ... 의해 전송 이스케이프 시퀀스에 대한 접두사
스테판 Chazelas가

그것은 내가 고려하지 않은 좋은 지적입니다. 그것을 테스트하고, 이스케이프는 리터럴을 보내려면 두 번 보내야 ^[하므로 showtopper가 아닐 수도 있습니다 (어쨌든 그것에 의존하는 바인딩은 사용하지 않습니다).
jasonwryan

Esc, Esc두 개의 ESC 문자를 보냅니다. Esc한 번 누르고 1 초 정도 기다릴 수도 있습니다 (나머지 이스케이프 시퀀스를 기다리는 기본 시간 초과).
Stéphane Chazelas

예. 먼저 바인딩 방법을 알아 내야합니다 :)
jasonwryan

답변:


5

키 바인딩으로는 불가능합니다. Ctrl-G매크로 또는 키 바인딩 처리보다 낮은 레벨에서 뮤트로 하드 코딩됩니다 (뮤트 mutt_getch()의 모든 사용자 입력의 핵심에서에 오류를 반환하는 뮤트의 소스 코드 참조 ^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 인 경우 문제가됩니다.


공감 : 질문에 답변하기 때문에 (즉, 불가능합니다). "하드 코딩 된 ... 낮은 수준에서"자세히 설명해 주시겠습니까? 그리고 해결 방법은 독창적이지만 다른 많은 터미널 프로그램에서 Escape를 사용하므로 실제로는 불가능합니다.
jasonwryan

자세한 내용으로 답변을 편집했습니다. 위의 주석에서 언급 한 이유로 알고있는 응용 프로그램에는 일반적으로 없기 때문에 다른 프로그램에 Esc가 바인딩되어 있다는 사실에 놀랐습니다.
Stéphane Chazelas

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가 단지 "...."를 입력하지 않고 헤더 나 검색어 등으로 만들 수 있도록하기 위해 필요합니다.


0

이 솔루션은 너무 나쁘기 때문에 저자는 ^ G를 제거하기 위해 Mutt의 소스 코드를 편집하는 것을 선호했습니다.

경고 :이 솔루션은 OSX, Emacs 및 Ctrl+ 를 사용하는 다른 응용 프로그램과 호환되지 않는 것 같습니다G

Mutt에서 첫날을 보낸 후 실수로 Vim에서 ^ G를 거의 사용하고있었습니다. 그런 다음 i3 창 관리자xfce-terminal 에서 여기서 작동하는 것 같습니다 .

이 줄을 ~/.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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.