【发布时间】:2013-11-22 17:55:51
【问题描述】:
所以我昨天学会了如何使用绑定。
通过在终端中键入 Ctrl+v 后跟一个键,我得到一个表示该键的原始字符。例如:Ctrl+v 后跟 Esc 返回^[。
我的问题是,如何绑定“输入键”。 Enter 键返回 ^M 但当我输入命令时
bind '"\e^M":"foobar"'
按回车键不会导致在我的终端中输入 foobar。
【问题讨论】:
所以我昨天学会了如何使用绑定。
通过在终端中键入 Ctrl+v 后跟一个键,我得到一个表示该键的原始字符。例如:Ctrl+v 后跟 Esc 返回^[。
我的问题是,如何绑定“输入键”。 Enter 键返回 ^M 但当我输入命令时
bind '"\e^M":"foobar"'
按回车键不会导致在我的终端中输入 foobar。
【问题讨论】:
bind '"\e^M":"foobar"'
绑定 Escape-Enter,而不是 Enter。你只是想要
bind '"^M":"foobar"'
^M 必须是实际控制字符,而不是^ 和M。更容易打字的是
bind '"\C-M":"foobar"'
【讨论】:
bash 手册页中的 Readline 表示法。看起来“C-M”就足够了;我不确定 "\C-M" 是否是一个可接受的替代方案,或者 "\C" 是否只是被 bash 视为转义的 "C",它被视为 "C"。
$ alias ^M='echo foobar'
$ ^M
foobar
【讨论】: