为什么在 bash 中 top 会打破历史记录-向后搜索?

为什么在 bash 中 top 会打破历史记录-向后搜索?

我的 .bashrc 中有以下一行:

bind '"\e[A": history-search-backward'

这导致当我在命令提示符中输入“abc”并按下向上箭头时,bash 只会在历史记录中搜索以“abc”开头的命令。一切都很好,直到我运行 top(也许还有一些我不确定的其他应用程序,我确定是使用 top),此时此行为恢复为正常搜索。但是,当我bind '"\e[A": history-search-backward' 在终端中运行时,没有任何变化,我必须终止并重新启动终端才能恢复旧行为。有没有办法扭转它(或防止它发生?)这发生在 Unity 和 Gnome Shell 中的 gnome-terminal 和 xterm 中。tty 似乎不受影响。

我的 stok ubuntu .bashrc 上的 -bashrc 是这样的:

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
# that behaviour is for pageup and pagedown
bind '"\e[5~": previous-history'
bind '"\e[6~": next-history'

# show possibilities if tab ambigious
set show-all-if-ambiguous on
# ignore case when completing, lets see how it works
set completion-ignore-case on


shopt -s cdspell
HISTSIZE=10000
HISTCONTROL=ignoredups
HISTFILESIZE=10001
HISTTIMEFORMAT="%h/%d - %H:%M:%S "
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

答案1

事实证明,一些行为不当的应用程序打破光标模式cat. 其症状与我们意外将二进制文件传输到终端时的症状类似。

修复方法是调用reset。如果Enter也坏了,那么我们可以使用Ctrl+ J,正如所提到的这里

至于为什么top(或者在我的情况下是一些使用转义符进行彩色输出的随机脚本)会中断的原始问题history-search-backward。当它坏了时,您可以运行read然后按箭头键。通常是这样的,但是\e[A当它坏了时可能会变成\eOA。因此,history-search-backward也可以将其映射到,但通常终端处于不太可用的状态并reset修复了该问题。

答案2

尝试编辑/etc/inputrc文件中的绑定。

我在所有 Linux 系统上都使用“history-search-backward”,并且使用 top 没有任何问题。

如果您在编辑文件时遇到问题,请参阅我的回答这里

相关内容