En el manual de línea de lectura
# man readline
A continuación se describe cómo buscar hacia atrás y hacia adelante.
reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search.
forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the history as necessary. This is an incremental search.
Cuando presiono Ctrl+r y escribo "apt-get", puedo hacer un historial de búsqueda inversa tocando continuamente Ctrl+r. Pero luego presiono Ctrl+s y el terminal no avanza. ¿Estoy haciendo algo incorrecto?
Además, ¿qué clave representa el prefijo Meta "M-"?
Respuesta1
La secuencia C-s
se toma del controlador del terminal, como puede ver en
stty -a | grep '\^S'
Para liberar la secuencia para que readline la use, configure la secuencia del terminal de parada en alguna otra secuencia, como por ejemplo
stty stop ^J
o eliminarlo por completo con
stty stop undef
Después de eso C-s
funcionaría en la terminal dada.
Configúrelo ~/.bashrc
para que funcione en todos los terminales.
La M-
secuencia significa la Altclave, como ya se señaló.
Respuesta2
Además de asignar un carácter de 'parada' TTY diferente como se sugirió anteriormente, puede eliminarlo por completo si no planea usarlo (yo no suelo hacerlo), de esta manera:
$ stty stop undef
Luego, readline puede usar control-s para la búsqueda hacia adelante y no obtendrá ningún comportamiento extraño debido a que se agregue un nuevo carácter de parada.
Respuesta3
el historial de búsqueda directa (Cs) no funciona (aunque está en la página de manual).
'M-' representa el modificador de la tecla Alt.
Respuesta4
Por favor, no use:
stty stop ^J
pero
stty stop ^P
o cualquier otra cosa, ya que ^J
genera grandes problemas con ssh. (De todos modos, no sé por qué). Después de iniciar sesión, Enterla barra invertida no funcionaba. o tuve que escribir:
stty sane
export TERM=linux
antes quería escribir
ssh root@192...
entonces
stty stop ^P
resolvió ambos problemas al mismo tiempo.