为什么 Ctrl-Arrow 在 OS X 上的 bash 中不起作用?

Rya*_*son 20 bash macos

我在我使用的每个 Linux 系统上都使用Ctrl-Ctrl-但这些组合键在我的 Macbook Pro 上的 bash 中不起作用。它正在运行 Snow Leopard,而我正在使用内置的终端应用程序。

组合键似乎没有被任何东西之前或终端捕获,因为如果我 ssh 到我的一台 Linux 服务器,我可以使用Ctrl- /跳转到命令行上的下一个/上一个单词。但是,当我在 Macbook 上的 bash 中尝试此组合键时,我只会得到“C”代表右箭头和“D”代表左箭头。

关于如何让这些密钥在 darwin bash 中工作的任何想法?

小智 15

OS X 使用 emacs 键绑定我的默认值。这几乎适用于 OS X 上的每个应用程序,它相当不错。这意味着像 Ca 和 Ce 之类的东西是行的开头/结尾。您还可以使用 M-backspace 获得漂亮的反向词kill,哦,以及使用 Ck 的 kill-line。

这应该意味着在您的终端中,forward/backward-word 分别绑定到 Mf 和 Mb(M = Meta = alt/option),但事实并非如此。在 OS X 上前进/后退词绑定到 M-?和M-?默认情况下。

您可以通过更改为您的帐户配置 GNU Readline 库的方式来更改此行为。这发生在您的~/.inputrc文件中。您可以获得大量可绑定命令man readline以及在线文档,例如此处。.

因此,要回答您的问题,您想重新映射 Readline 在看到 C- 时所做的事情吗?和 C-?在你的 linux 服务器上做它所做的事情。

~/.inputrc对于您要执行的操作,文件的语法非常简单:key-sequence: action.

这应该是您获得所需行为所需要的:

"\e[5C": forward-word
"\e[5D": backward-word
Run Code Online (Sandbox Code Playgroud)

这是另一个包含其他有用绑定的页面

(您可能可以将 /etc/inputrc 从您的 linux 机器复制到您的 OS X ~/.inputrc)

  • 另一个注意事项:如果仍然无法正常工作,可能是因为与 Mission Control/Spaces 的快捷方式冲突。系统偏好设置 -> 键盘 -> 快捷方式 -> 任务控制,向左/向右移动一个空格 (4认同)