No se puede reenviar el historial de Bash de búsqueda de manera similar a CTRL-r

203

Estoy tratando de buscar mi historial de bash de manera similar a con CTRL- r, pero para avanzar.

Ha sido un dolor para mí, cuando me acaba de golpear con demasiada frecuencia CTRL- r, para encontrar el comando anterior de nuevo.

¿Cómo puede realizar una búsqueda hacia adelante en su historial de Bash de manera similar a la búsqueda inversa?

Léo Léopold Hertz 준영
fuente

Respuestas:

321

También puedes buscar hacia adelante. Del manual de información de bash, " 8.2.5 Búsqueda de comandos en el historial ":

Para buscar hacia atrás en el historial de una cadena en particular, escriba C-r. La escritura C-sbusca hacia adelante a través del historial.

Sin embargo, el problema con Ctrl-S es que a veces choca con el control de flujo XON / XOFF (en Konsole, por ejemplo). Sin embargo, la búsqueda es una función de línea de lectura, y debería poder vincularla a alguna otra tecla. Actualización: más simple y mejor es simplemente deshabilitar XON / XOFF ejecutando

stty -ixon
hlovdal
fuente
44
Esto es genial, pero agrego stty -ixon a mi .profile y no parece funcionar para nuevas pestañas. ¿Alguna idea de cómo hacer que esto funcione? Me encantaría que XON / XOFF esté deshabilitado de forma predeterminada.
John Gallagher
13
En caso de que alguien más tenga el mismo problema que yo, si agrega esto a .profile no tendrá efecto. ¡Solo cuando lo agregas al .bash_profile sucede la magia! Gracias por un gran consejo: esto me había estado volviendo loco durante años.
John Gallagher
12
@JohnGallagher importante a destacar es que .bash_profile, y .profilesolamente son de origen para acceder al sistema conchas. Pondría esto en .bashrc(que me fuente .profile).
Victor Zamanian
13
[[ $- == *i* ]] && stty -ixonpuede usarse para evitar el problema descrito aquí
mMontu
3
En caso de que esté usando PuTTY y no pueda / no quiera mantener .bash_profileen cada máquina a la que se conecte, esta respuesta en superusuario funciona de maravilla.
Fazy
41

El mejor truco en mi humilde opinión es habilitar con pgupy pgdown. solo pon eso en tu~/.inputrc

"\e[5~": history-search-forward
"\e[6~": history-search-backward

cerrar sesión / iniciar sesión, escriba las primeras letras y luego pgupo pgdownpara buscar en todo el historial

ctrl-R busca todas las líneas que contienen palabras, mientras que las líneas de búsqueda de búsqueda de historial hacia adelante que comienzan con palabras

Eric Burghard
fuente
2
También puede descomentar estas 2 líneas /etc/inputrc(por ejemplo, en Ubuntu).
falconepl
2
Prefiero vincular esto a la flecha hacia arriba y hacia abajo: "\ e [A": history-search-backward y "\ e [B": history-search-forward
shmup
¿Qué pasa si esto no tiene efecto en bash?
Sören
26

Es posible que desee probar https://github.com/dvorka/hstr que permite el filtrado de "estilo de cuadro de sugerencia" del historial de Bash con un orden basado en métricas (opcional), es decir, es mucho más eficiente y más rápido tanto en dirección hacia adelante como hacia atrás:

ingrese la descripción de la imagen aquí

Puede ser fácilmente vinculado a Ctrl-ry / oCtrl-s

Martin Dvorak
fuente
55
Estoy enamorado. Instrucciones rápidas para instalar en Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivFan
14

Usualmente presiono ESCen la terminal, y luego el >. Se restablece al menos y luego puede intentar hacer clic con menos frecuencia CTRL+ R.

Eyad Ebrahim
fuente
s / click / press / Además, debe presionar escape dos veces (la primera vez para escapar de la búsqueda hacia atrás).
Croad Langshan 01 de