Ponowne łączenie „wyczyść monit” w mutt


9

Domyślnie, wprowadzając informacje w wierszu polecenia w mutt, możesz wyczyścić monit za pomocą Ctrlg, jak opisano w instrukcji :

^ G n / d przerwać

Próbowałem powiązać tę funkcję Escape. Niestety abortnie jest wymieniony w dostępnych funkcjach, ani w instrukcji , ani w źródle .

Próbowałem użyć tego w moim .muttrc:

edytor powiązań <esc> przerwał

ale generuje błąd:

Błąd w /home/jason/.mutt/muttrc, wiersz 143: przerwanie: brak takiej funkcji na mapie

Próbowałem użyć innej mapy, na przykład ( generic), i eksperymentowałem z innymi fikcyjnymi funkcjami, na przykład clearbezskutecznie.

Jak powiązać, Escapeaby wyczyścić wiersz zachęty?


1
Wiązanie ucieczki nie jest dobrym pomysłem, ponieważ znak ucieczki (wysyłany po naciśnięciu klawisza Escape) jest także prefiksem sekwencji ucieczki wysyłanych przez wszystkie klawisze funkcyjne, takie jak strzałki, del, F1 ...
Stéphane Chazelas

To dobry punkt, którego nie wziąłem pod uwagę. Testując, Escape musi zostać wysłany dwa razy, aby wysłać literał, ^[więc może nie być showstopperem (i tak nie używam żadnych powiązań, które na nim polegają).
jasonwryan

Esc, Escwyśle ​​dwa znaki ESC. Możesz także nacisnąć Escraz i poczekać około jednej sekundy (domyślny limit czasu oczekiwania na resztę sekwencji ucieczki).
Stéphane Chazelas,

Tak. Najpierw muszę wymyślić, jak to powiązać :)
jasonwryan,

Odpowiedzi:


5

Nie jest to możliwe z powiązaniami klawiszy. Ctrl-Gjest zakodowany na stałe w mutcie na poziomie niższym niż przetwarzanie makr lub kluczowanie (patrz mutt_getch()w kodzie źródłowym mutta, w rdzeniu wszystkich danych wejściowych użytkownika w mutcie, które zwracają błąd po ^G).

macro editor \e '^G'

też by nie działał.

Co możesz zrobić, to skonfigurować terminal do wysyłania ^Gpo naciśnięciuEscape

Z Xterm:

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

Jeśli używasz screen, możesz to zrobić

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

przed wywołaniem mutta i przywróceniem go później (niestety nie wydaje się, aby można było przypisać do niego przypisania klawiszy na ekranie okna). Będzie to również problem, jeśli edytorem wiadomości e-mail jest vi.


Upvoted: ponieważ odpowiada na pytanie (tzn. Nie jest możliwe). Czy mógłbyś rozwinąć „zakodowane ... na niższym poziomie”. I chociaż obejście jest genialne, nie jest tak naprawdę wykonalne, ponieważ używam Escape w wielu innych programach terminalowych - stąd chęć powiązania go tutaj.
jasonwryan

Zredagowałem swoją odpowiedź, podając więcej szczegółów. Dziwi mnie, że Esc jest związany z innymi programami, ponieważ zwykle nie ma go w aplikacjach, które znam z powodów wymienionych w komentarzach powyżej.
Stéphane Chazelas,

2

Wydaje mi się, że naprawdę złym pomysłem jest powiązanie ucieczki ControlG. Przybyłem tutaj, szukając kundla, ale ponieważ wydaje się, że nie ma takiego, dam odpowiedź z tego, co robię dla każdego, kto natknie się na to. Nie jest optymalny, ale nie wpłynie na żadne inne programy:

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

lub

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

Używanie czegoś takiego jak xdotool lub xsendkey do fałszywego control + g działa i nie psuje ucieczki wszędzie indziej. Jest dla mnie wizualne opóźnienie wyjścia z edytora linii, ale powiązania indeksu będą działać natychmiast, a wizualne opóźnienie zniknie, gdy tylko użyjesz powiązania indeksu. Pierwsze wejście jest konieczne, aby mutt nie wpisał po prostu „....” i przekształcił go w nagłówek, wyszukiwane hasło lub coś w tym rodzaju.


0

To rozwiązanie jest tak złe, że autor wolał edytować kod źródłowy Mutt, aby pozbyć się ^ G

Ostrzeżenie: To rozwiązanie wydaje się niezgodne z OSX, Emacsem i innymi aplikacjami używającymi Ctrl+G

Po pierwszym dniu w Mutt prawie przez pomyłkę prawie użyłem ^ G w Vimie ... Potem spróbowałem czegoś, co wydaje się działać tutaj, w menedżerze okien i3 i terminalu xfce .

Dodano tę linię do ~/.i3/config:

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

Musiałem użyć, "\[Escape]\[Control]\[g]"ponieważ tylko "\[Control]\[g]"przestał działać w Vimie.

Jeśli nie używasz i3, myślę, że możesz użyć xbindkeys do uruchomienia xvkbd -xsendevent -text "\[Escape]\[Control]\[g]"po Escnaciśnięciu.

To nie jest piękne rozwiązanie ... Może sprawić, że twój Escklucz będzie bezużyteczny w niektórych programach, ale przynajmniej tutaj wydaje się być w porządku.

EDYTOWAĆ:

Widzę teraz, że część Ctrl+ Gsprawia, że ​​Vim pokazuje pozycję w pliku. Na razie nic dramatycznego.

Ten link wydaje się mieć lepsze rozwiązanie, ale dla urxvt : http://www.unixli.com/q/answers-urxvt-map-esc-key-to-key-sequence-83211.html

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.