2009-02-14 11 views
43

Pregunta: ¿Cómo saber Ctrl +r revertir-i-búsqueda de "reiniciar en sí" y empieza a buscar desde el fondo de su historial cada vez?Control-r reverse-i-search en bash: ¿cómo "reinicia" la búsqueda en Cygwin?

Antecedentes: Al usar reverse-i-search en Bash, siempre me quedo atascado una vez que se termina de buscar a través del historial y no puede encontrar más coincidencias. A veces presiono Esc y vuelvo a invocar Ctrl + r por segunda vez, esperando que comience una nueva búsqueda desde el final de mi historial. Sin embargo, el "puntero" todavía parece estar en el lugar anterior que dejó en mi historia.

El problema es que, generalmente, no quiero este comportamiento. Si lo golpeo Esc, y luego volver a invocar Ctrl +r, me gustaría que para indicar que debería volver a empezar de nuevo desde el fondo y trabajar su camino hacia arriba.

Actualización: Supongo que debería haber mencionado que estoy usando Cygwin en Windows, ya que ninguna de las soluciones mencionadas hasta ahora funcionan.

Actualización: Esta pregunta fue marcada como potential duplicate question. Esta pregunta no es un duplicado por los siguientes motivos:

  • La pregunta alternativa no se refiere a Cygwin.
  • La pregunta alternativa no trata de cómo restablecer la búsqueda a su estado inicial (en cambio, se trata simplemente de ir hacia atrás en la búsqueda, así como hacia adelante).
+1

Con respecto a Cygwin: He actualizado mi respuesta. No uso Cygwin, así que no puedo intentarlo, pero^G puede funcionar para usted en ese caso. –

+0

Sí, parece que eso funciona.^G inmediatamente después^R – dreftymac

+0

posible duplicado de [No se puede reenviar el historial de Bash de búsqueda de forma similar a como lo hace CTRL-r] (http://stackoverflow.com/questions/791765/unable-to-forward-search-bash-history-similarly -as-with-ctrl-r) –

Respuesta

18

nunca intentaron hacer de este defecto al golpear escapar, pero Bash emplea readline para la entrada, que acepta combinaciones de teclas al estilo Emacs por defecto, para que pueda ir a la parte inferior con M-> (por lo general, ya sea mediante la combinación de Meta/Alt y > o siguiendo la tecla Escape con >).

Si M-> no funciona porque su terminal no le permite ingresar, intente ^G (Control y G simultáneamente). Ese es el trazo "cancelar" en Emacs y generalmente también funciona con readline.

31

Mi bash funciona como usted espera. Tal vez presionar "ctrl + C" en lugar de "esc" puede ayudar.

Además, puede buscar hacia adelante usando la tecla "Ctrl + s"

edición: trabajos ctrl + s si no envía un "stop" a su terminal, es decir, si "-a stty" le da "-ixon". Puede cambiarlo por "stty -ixon". Gracias a @Phil por recordatorio.

+2

ctrl-s generalmente envía una parada a su terminal, por lo que a menos que tenga esa configuración reconfigurada (stty -a le dará eso), su terminal interceptará esa pulsación de tecla) –

2
M-> ... moves to end of history 
M-< ... moves to start of history 

Su clave alt izquierda es probablemente su tecla Meta.

Leído por el hombre para obtener más instrucciones de lectura.

13

Tiene una respuesta confirmada para esta pregunta.

Para reiniciar ctrl-r, la tecla usual de emacs ctrl-g puede hacer. Si desea revertir ctrl-r por un paso, en lugar de volver a subir desde la parte inferior, puede usar ctrl-s. El truco es ctrl-s también se utiliza para pausar el terminal. Entonces necesitarías asignar eso a otra clave. Por ejemplo, lo siguiente establecerá pause para ctrl-w (y mantendrá "resume" con ctrl-q).

$ stty STOP ^w 

Como alternativa, puede también totalmente desactivar XON/XOFF (hoja de vida/pausa) fluya caracteres de control por

$ stty -ixon -ixoff 

Esto también ctrl libre-up -s. Para volver a habilitar la pausa/reanudar, puede hacer

$ stty ixon ixoff 
Cuestiones relacionadas