在 mutt 中重新绑定“清除提示”

jas*_*yan 11 mutt key-mapping

默认情况下,在 中的命令提示符下输入信息时mutt,可以使用 清除提示Ctrlg,如手册所述

^G 不适用 中止

我一直在尝试将此函数绑定到Escape. 不幸的是,abort在可用的功能中没有列出,无论是在手册中,还是在源码中

我试过在我的.muttrc

绑定编辑器 <esc> 中止

但它抛出一个错误:

/home/jason/.mutt/muttrc 中的错误,第 143 行:中止:地图中没有这样的功能

我尝试使用不同的地图,例如 ( generic) 并尝试使用其他虚构函数,例如clear,但无济于事。

我将如何绑定Escape以清除提示行?

Sté*_*las 7

笨蛋

键绑定是不可能的。Ctrl-G在 mutt 中硬编码的级别低于宏或键绑定处理(参见mutt_getch()mutt 的源代码,在 mutt 中返回错误的所有用户输入的核心^G)。

macro editor \e '^G'
Run Code Online (Sandbox Code Playgroud)

也行不通。

您可以做的是配置您的终端以^G在按下时发送Escape

使用 xterm:

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

如果你正在使用screen,你也可以这样做

screen -X bindkey $'\e' stuff $'\a'
Run Code Online (Sandbox Code Playgroud)

在调用 mutt 并在之后恢复它之前(不幸的是,您似乎无法在屏幕中拥有每个屏幕窗口的键绑定)。此外,如果您的电子邮件编辑器是 vi,这将是一个问题。

纽穆特

自发布20200313以来,有$abort_key配置变量可以更改默认Ctrl-G.