
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 cat
un archivo binario a la terminal.
La solución es llamar reset
. Si Enter
tambié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 read
y luego presionar las teclas de flecha. Generalmente lo es, \e[A
pero 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 reset
soluciona el problema.
Respuesta2
Intente editar enlaces en /etc/inputrc
el 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í.