¿Por qué la búsqueda histórica superior está hacia atrás en bash?

¿Por qué la búsqueda histórica superior está hacia atrás en bash?

Tengo una línea en mi .bashrc la siguiente línea:

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

eso causa que cuando escribo "abc" en el símbolo del sistema y presiono la flecha hacia arriba, bash busca en el historial solo los comandos que comienzan con "abc". Todo está bien hasta que ejecuto top (y tal vez algunas otras aplicaciones de las que no estoy seguro, con top, estoy seguro) cuando este comportamiento se invierte a la búsqueda normal. Sin embargo, cuando ejecuto bind '"\e[A": history-search-backward' en la terminal, nada cambia y tengo que cerrar y reiniciar la terminal para recuperar el comportamiento anterior. ¿Hay alguna manera de revertirlo (o evitar que suceda?) Esto sucede en gnome-terminal y xterm en Unity y Gnome Shell. tty parece no verse afectado.

Mi -bashrc encima de stok ubuntu .bashrc es este:

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"

Respuesta1

Resulta que algunas aplicaciones se comportan malromper el modo de cursor. Los síntomas son similares a cuando accidentalmente ingresamos catun archivo binario a la terminal.

La solución es llamar reset. Si Entertambién está roto, entonces podemos usar Ctrl+ Jcomo también se mencionaaquí.

En cuanto a la pregunta original de por qué top(o en mi caso, algún script aleatorio que usa caracteres de escape para una salida colorida) se rompe history-search-backward. Cuando esté roto, puedes correr ready luego presionar las teclas de flecha. Generalmente lo es, \e[Apero cuando se rompe puede volverse \eOA. Entonces, también se podría asignar eso history-search-backward, pero generalmente el terminal no está en un estado muy utilizable y resetsoluciona el problema.

Respuesta2

Intente editar enlaces en /etc/inputrcel archivo.

Utilizo 'history-search-backward' en todos los sistemas Linux y no tengo ningún problema con top.

Si tienes problemas para editar el archivo, mira mi respuesta.aquí.

información relacionada