如何在Mutt中绑定<Control> <Arrowkey>?


9

我被困在这里:

是否可以将其中之一<enter>, <backspace>, <up>, <down>, <left>, <right>与控件绑定在一起?

\C<foo>显示为|foo>帮助中的内容,并且^<up>不受限制。
'\C<foo>'\C <foo>'也不要工作(与之相同")。

<control> 不存在。

实际上,你可以得到^<foo>的帮助下展现出来,但是只有当你映射^<foo>,这不正是我想要的。;)

Answers:


5

首先,您需要确定终端是否为这些组合键发送不同的转义序列。在终端中运行的应用程序将字符作为输入,而不是键。功能键被编码为控制字符或以转义字符(您可以\e在键绑定中编写)开头的转义序列。

要查看终端中组合键发送的转义序列,请在外壳程序提示符下按Ctrl+ V,然后按组合键。例如,如果在外壳程序提示符下按Ctrl+ V Ctrl+ ,则会Left看到^[O5D^[是转义字符,因此我需要绑定\eO5D到Mutt中以使其对Ctrl+ 作出反应Left

bind editor \eO5D backward-word

某些终端为带有不同修饰符的同一键发送相同的转义序列。如果是这种情况,您将需要弄清楚如何更改终端的行为或切换到其他终端。


听起来不错,但不起作用。\e是转义键,而不是转义字符……
Profpatsch

@Profpatsch Weird,这种绑定对我有用。自从我一直使用Mutt 1.5以来,也许1.4的工作方式有所不同?如果\e在宏中使用它,是否可以正常工作macro editor \e[O5D \eb
吉尔(Gilles)'所以别再邪恶了'

1
我在终结者(Terminator)上,当我点击Ctrl+Downget时^[[1;5B,它也bind index \e[1;5B command不能使用\e1;5B ,也不能使用。哦,我使用Mutt 1.5.21(Arch。;)
Profpatsch

1
@Profpatsch好的,我可以重现此内容。似乎有一个限制到5个字符:bind editor \e[1\;5 backward-word对我的作品(和插入一个额外的D,当我进入ESC [ 1 ; 5 D),但bind editor \e[1\;5D backward-word在结果ESC [ 1 ; 5 D无所事事。我在源代码(MAX_SEQ)中看到了8个字符的限制,但是没有任何东西会触发5个字符。
吉尔斯(Gilles)'所以

@Profpatsch一种解决方法是使您的终端发送较短的序列。我不知道终结者是否支持这一点。
吉尔斯(Gilles)'所以

15

我在这里找到正确答案:

在Mutt内部,使用命令

:exec what-key

然后按所需的键(如Ctrl +箭头),您可以学习如何引用任何键。就我而言,我<C-Up>需要Ctrl + Up。


4
如果您成功使用:exec what-key来获取此信息,但又无法找出要按哪个“键”来退出该what-key命令,则退出的键序列为Ctrl-g
KDN

@KDN:谢谢。有点尴尬。;)
Teekin

@KDN Ctrl-g用于取消emacs和许多unix shell中的命令。
Jangid
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.