在 readline/bash 中使用 vi 模式似乎会中断历史搜索

Using vi mode in readline/bash appears to break history-search

我非常喜欢将 readline 的 history-search-forwardhistory-search-backward 与 bash 一起使用。我的 .inpurc 中有以下内容:

# Scroll through matching history with up and down keys
"\e[A":history-search-backward
"\e[B":history-search-forward

并使用向上和向下键滚动浏览历史记录中的匹配命令。

但是,当我启用 vi 模式时,它似乎停止了历史搜索工作。我这样配置了 vi 模式(也在 .inputrc 中):

# Enable vi mode
set editing-mode vi
set keymap vi-command

# insert/command mode indicator:
set show-mode-in-prompt on

# Indicator formatting in prompt:
set vi-cmd-mode-string "\e[0;34m[\e[0mC\e[0;34m]\e[0m "
set vi-ins-mode-string "\e[0;34m[\e[0mI\e[0;34m]\e[0m "

当我从 .inputrc 中删除与 vi 模式相关的行时,历史搜索工作正常。当我把它们放回去时,它坏了。

有没有办法同时启用这两个功能?

我正在使用通过自制程序在 OSX Sierra 上安装的 GNU Bash 4.4.12。

我在 vi-insert 模式下工作:

set editing-mode vi
set keymap vi-insert
    "\e[A":history-search-backward
    "\e[B":history-search-forward

或者你可以在bashrc中这样写:

set -o vi
bind -m vi-insert '"\e[A":history-search-backward'
bind -m vi-insert '"\e[B":history-search-forward'