¿Cómo avanzar el historial de búsqueda con el comando de búsqueda inversa (ctrl+r)?

¿Cómo avanzar el historial de búsqueda con el comando de búsqueda inversa (ctrl+r)?

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-sse 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-sfuncionaría en la terminal dada.

Configúrelo ~/.bashrcpara 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 ^Jgenera 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.

información relacionada