Повторне "чітке запитання" у mutt


9

За замовчуванням, вводячи інформацію в командному рядку mutt, ви можете очистити відповідний рядок Ctrlg, як описано в посібнику :

^ Г н / а аборт

Я намагався пов'язати цю функцію Escape. На жаль, abortне вказано в доступних функціях ні в посібнику , ні в джерелі .

Я спробував це використовувати в своїх .muttrc:

прив’язати редактор <esc> перервати

але це видає помилку:

Помилка в /home/jason/.mutt/muttrc, рядок 143: перервати: немає такої функції на карті

Я намагався використовувати іншу карту, як-от ( generic), і експериментував з іншими фіктивними функціями, як-от clear, безрезультатно.

Як я зобов’язуюсь Escapeочистити рядок підказок?


1
Пов’язування втечі не є гарною ідеєю, оскільки символ втечі (надсилається після натискання клавіші) - це також префікс для послідовностей втечі, що надсилаються усіма функціональними клавішами, такими як стрілки, дель, F1 ...
Stéphane Chazelas

Це хороший момент, який я не вважав. Випробовуючи це, Escape потрібно надсилати двічі, щоб надіслати буквальний, ^[щоб він не був показовим стоппером (я все одно не використовую прив’язок, які покладаються на нього).
Jasonwryan

Esc, Escнадішле два символи ESC. Ви також можете натиснути Escодин раз і зачекати близько однієї секунди (за замовчуванням очікується решта послідовності запуску).
Стефан Шазелас

Так. Спочатку я повинен розібратися, як це пов’язати :)
Jasonwryan

Відповіді:


5

Це неможливо за допомогою прив'язки ключів. 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.


Оновлено: тому що він відповідає на питання (тобто це неможливо). Чи можете ви, будь ласка, детальніше розповісти про "жорстко закодовані ... на нижчому рівні". І хоча вирішення проблеми геніальне, це не дуже реально, оскільки я використовую Escape у багатьох інших термінальних програмах - отже, бажання пов’язати його тут.
Jasonwryan

Я відредагував свою відповідь більш детально. Я здивований, що ви пов'язані з Esc в інших програмах, оскільки зазвичай це не в додатках, я знаю з причини, зазначеної в коментарях вище.
Стефан Шазелас

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 для підробленого контролю + g працює і не псує втечу з усіх інших країн. Для мене виходить візуальна затримка для виходу з редактора рядків, але прив'язки індексу працюватимуть негайно, і затримка зору зникла, як тільки ви використовуєте прив'язку індексу. Перший вхід необхідний, щоб mutt не просто набрав "...." і не вніс це в заголовок, пошуковий термін чи щось.


0

Це рішення настільки погано, що автор вважав за краще редагувати вихідний код Мутта, щоб позбутися ^ G

Попередження: Це рішення здається несумісним з OSX, Emacs та іншими програмами, які використовують Ctrl+G

Після мого першого дня в Mutt я майже помилково використовував ^ G у Vim ... Потім я спробував щось, що, здається, працює тут, в i3 window manager та xfce-terminal .

Цей рядок додано до ~/.i3/config:

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

Довелося використовувати, "\[Escape]\[Control]\[g]"тому що лише "\[Control]\[g]"змусило перестати працювати у Vim.

Якщо ви не використовуєте 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.