Bash ofrece la funcionalidad de búsqueda inversa a través de Ctrl+ R. Entonces uno puede escribir una parte de un comando que mostrará una entrada adecuada del historial.
Supongamos que esta es mi historia:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
Busco foo. Al presionar Ctrl+ Rnuevamente se muestra la siguiente entrada de búsqueda adecuada. A menudo me sucede que soy demasiado rápido y navego más allá de mi resultado deseado y vim foo3se muestra y ahora quiero volver a vim foo2.
Por lo tanto, mi pregunta es: ¿Cómo navego dentro de la búsqueda inversa?
bash
command-history
search
k0pernikus
fuente
fuente

Respuestas:
Puede acceder a esto a través de la
forward-search-historyfunción que está vinculada por defecto a ctrl+s. Desafortunadamente, ctrl+sse usa para señalarxoffpor defecto, lo que significa que no puede usarlo para cambiar la dirección de la búsqueda. Hay dos soluciones para resolver el problema, una deshabilita el envío de laxoff/xonseñalización y la otra cambia la combinación de teclas paraforward-search-historyDeshabilitar xon / xoff
Ejecuta
stty -ixonen tu terminal o agrégalo a tu~/.bashrc. Esto le permite usar ctrl+spara usar laforward-search-historyfunción de historial.Para obtener más información sobre el flujo de control, consulte ¿Cómo descongelar después de presionar accidentalmente Ctrl-S en un terminal? y algunas de las respuestas
Cambiar la combinación de teclas
Si no desea cambiar el comportamiento predeterminado de ctrl+s, puede cambiar la combinación de teclas
forward-search-historyconbind. Como la mayoría de las claves ya están definidas en bash, es posible que deba ser creativo:Esto se unirá ctrl+tal historial de búsqueda hacia adelante, pero tenga en cuenta que, por defecto, se ctrl+tejecuta
transpose-charsfuente
stty -ixonenzshy funciona muy bien. Sin embargo, ¿hay algún efecto secundario posiblemente no deseado en la desactivación de laxoff/xonseñalización?ctrl+spara pausar la salida del terminal por más tiempo. Si nunca lo usaste antes, esto no es problemaC-s... muy útil cuando se usa tail en los registros del servidor. Ordenado ! (Ojalá tuviera otro voto a favor :))bind '"\C-t": history-search-forward'Como alternativa a la búsqueda inversa básica y la búsqueda hacia adelante proporcionadas por su bash, es posible que desee considerar:
fzf , un "buscador difuso de línea de comandos" autodescrito.
Puede reemplazar la búsqueda inversa predeterminada de su bash (y otros terminales).
Sus beneficios son que:
Mi flujo de trabajo ahora se basa completamente en fzf sobre la búsqueda inversa básica en máquinas sobre las que tengo control.
fuente