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


9

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

^ G不适用

我一直在尝试将此功能绑定到Escape。不幸的是,手册源代码中abort未在可用功能中列出。

我试过在我的.muttrc

绑定编辑器<esc>中止

但是它抛出一个错误:

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

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

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


1
结合逃避不是一个好主意,因为转义字符(在按下发送逃逸)也将所有的功能键似箭,德尔,F1 ...发送转义序列前缀
斯特凡Chazelas

我没有考虑过这一点。测试它,Escape需要发送两次以发送文字,^[因此它可能不是最热门的(无论如何我都不使用任何依赖它的绑定)。
jasonwryan 2012年

EscEsc将发送两个ESC字符。您也可以按Esc一次,然后等待大约一秒钟(默认超时等待转义序列的其余部分)。
斯特凡Chazelas

是。首先,我必须研究如何绑定它:)
jasonwryan 2012年

Answers:


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 2012年

我已经详细编辑了答案。我很惊讶您是否将Esc绑定到其他程序中,因为上面提到的原因通常使它不存在于我所知道的应用程序中。
斯特凡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

这个解决方案太糟糕了,以至于作者更喜欢编辑Mutt的源代码以摆脱^ G。

警告:此解决方案似乎与使用Ctrl+的OSX,Emacs和其他应用程序不兼容G

在Mutt的第一天之后,我几乎是错误地在Vim中使用了^ G ...然后,我尝试了一些在i3窗口管理器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在文件中显示位置。就目前而言,没有什么太戏剧性的。

此链接似乎有更好的解决方案,但对于urxvthttp : //www.unixli.com/q/answers-urxvt-map-esc-key-to-key-sequence-83211.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.