如何使用 ALT (Meta) 或其他一些控制键作为前缀而不是 `\C-` 和 `\e` 来设置 Readline 键绑定?

Shu*_*eng 4 shell bash terminal readline macos

我只能找到使用 Control ( \C-) 或 Escape ( \e) 作为前缀设置 Readline 键绑定的示例。

就我而言,在 macOS 上,该\C-空间被默认键绑定完全填满,而该\e空间在带有触控栏的 Macbook 上不实用。

进入"\M-f": kill-word~/.inputrc在结果:

bind -P | grep -F "\M-"
kill-word can be found on "\e[3;5~" "\ed".
Run Code Online (Sandbox Code Playgroud)

kill-word不能使用任一执行OptionCommandfn作为前缀-的ReadLine忽略它。

此问题是否特定于 macOS,我该如何解决?

此外,如何控制执行键绑定(即较长键绑定的前缀)之前应该发生的“超时”?

@ added (@laktak):bind '"^[f": kill-word'不起作用,而是ƒ在终端上产生: 在此处输入图片说明

The*_*des 5

我不认为你做错了什么,你只需要告诉 Terminal.app 使用“Option”键作为“Meta”。只需转到 Terminal ( ?+ ,)的首选项,然后是Profiles,然后是默认配置文件的Keyboard选项卡,然后选中“Use Option as Meta key”。

Terminal.app“配置文件”的屏幕截图? “键盘”设置

否则,您将获得默认的 macOS 行为(在大多数键盘映射中),其中 Option + 键会产生特殊字符,就像Option+ 会从屏幕截图中f产生带有钩子小写字母“f”(完整参考此处)。

iTerm 2 中,我相信左 Option 键默认情况下已经做了明智的事情,但为了以防万一,这里是如何改变它:

iTerm 2 Option 键行为

至于将 Option 重新映射到 Escape,如果这是您仍然想要做的事情,可以通过单击窗口底部附近的“修改键...”按钮,从系统偏好设置中的键盘预置面板中完成。

macOS 系统设置键盘前面板

然后将其重新映射到您喜欢的任何内容(从可用选项中):

重新映射 macOS 键盘前面板中的修饰键

我在使用新 Mac 的前五分钟内打开了这个首选项面板,这样我就可以将 Caps Lock 重新映射到 Control,因为 Mac 键盘上的 Control 键位于一个尴尬的位置。


lak*_*tak 0

如果我正确理解你的问题:

bind '"^[f": kill-word'
Run Code Online (Sandbox Code Playgroud)

将定义Option+F调用kill-word