如何将iTerm中的反向搜索(Ctrl + R)键映射到不同的组合键

时间:2016-08-18 23:58:30

标签: bash terminal zsh iterm

我正在尝试将反向搜索历史(Ctrl + R)命令映射到iTerm中的其他命令组合,但不确定如何?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

提及readline的人是正确的。

您可以使用bind命令编辑绑定(尝试help bind)。

对于这个特殊问题,让我们看看对Control-R的约束:

$ bind -P |grep C-r
re-read-init-file can be found on "\C-x\C-r".
reverse-search-history can be found on "\C-r".
revert-line can be found on "\M-\C-r".

确定。其中一个只是\C-r,这意味着Control-R。让我们仔细检查:

$ bind -q reverse-search-history
reverse-search-history can be invoked via "\C-r".

man readline包括:

reverse-search-history (C-r) Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search.

看起来不错。我们如何改变它?我们假设您要使用⌘-B代替。 readline-speak中的Meta-b(又名\M-b)。

让我们尝试一下:

$ bind '\M-b:reverse-search-history'
$ bind -q reverse-search-history
reverse-search-history can be invoked via "\C-r", "\M-b".

现在按⌘-b会像Control-R一样触发反向搜索。 Control-R仍然受约束。我们可以解决这个问题:

$ bind -r '\C-r'
$ bind -q reverse-search-history
reverse-search-history can be invoked via "\M-b".

此更改将保留当前的shell会话,但在下次调用shell时将消失。要使更改持久,请执行以下操作:

$ echo '"\M-b": reverse-search-history' >> ~/.inputrc

现在~/.inputrc包含所需的绑定。任何将它用于readline配置(包括你的shell)的程序现在都将使用你指定的绑定。