我非常喜欢将readline的history-search-forward
和history-search-backward
与bash一起使用。我的.inpurc
:
# Scroll through matching history with up and down keys
"\e[A":history-search-backward
"\e[B":history-search-forward
并使用向上和向下键滚动历史记录中的匹配命令。
然而,当我启用vi-mode时,似乎停止了历史搜索的工作。我这样配置了vi-mode(也在.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 "\1\e[0;34m\2[\1\e[0m\2C\1\e[0;34m\2]\1\e[0m\2 "
set vi-ins-mode-string "\1\e[0;34m\2[\1\e[0m\2I\1\e[0;34m\2]\1\e[0m\2 "
当我从.inputrc
中删除与vi模式相关的行时,历史搜索工作正常。当我把它们放回去时,它会断裂。
有没有办法同时启用这两个功能?
我在OSX Sierra上使用通过自制程序安装的GNU Bash 4.4.12。
答案 0 :(得分:2)
以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'