¿Por qué CTRL-r actúa de manera extraña (mostrando solo una parte de un comando) en OS X

10

Ctrl+ res una gran herramienta para buscar .bash_historycomandos ejecutados previamente.

Sin embargo, cuando lo uso en mi OS X Terminal.app veo un comportamiento extraño, y me preguntaba si alguien más ve lo mismo o sabe cómo solucionarlo.

  1. Ctrl+r
  2. escribir algo como find
  3. oh genial, mira ... es el comando que quería find . -exec grep -q "hello world" '{}' \; -print
  4. Quiero ejecutar ese comando pero cambiar hola mundo a otra cosa.
  5. Entonces pegué o
  6. Ahora el comando es SORTA en la línea de comando, pero siempre parece una versión truncada del comando, como esta: -q "blog_posts_by" '{}' \; -printdonde está todo el comando y puedo usar las teclas del cursor para moverme por la línea, pero no todos Está impreso. Hay una desconexión entre lo que se muestra en la línea y lo que el terminal realmente piensa que estoy editando.

¿Alguien tiene idea de por qué podría suceder esto? No es un fenómeno fácil buscar en las webs.

Bryan Kennedy
fuente
¿Esto solo ocurre en líneas más largas que el ancho de la ventana de término?
Essobi
¿Qué versión de Terminal.App/OSX está ejecutando BTW? Versión bash? ¿Puedes mostrarnos tu .bashrc también?
Essobi

Respuestas:

14

Probablemente tenga secuencias de escape para colores en su solicitud que no estén delimitados correctamente. Necesitan estar encerrados en \[y \].

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

La longitud de las secuencias de caracteres que no se imprimen no se incluyen en la longitud de la solicitud cuando están encerradas y la posición de los comandos anteriores debe calcularse para una visualización adecuada cuando se ajustan.

Pausado hasta nuevo aviso.
fuente
OK, tuve algunos problemas más, que fueron resueltos por el que respondió en este hilo de StackOverflow - stackoverflow.com/questions/35563/…
bryan kennedy
Esto también se aplica a las nuevas líneas en la solicitud. Tuve una secuencia de control de hipo caída porque fue al principio PS1, pero no de nuevo después del carácter de nueva línea.
Walf
0

Esto podría deberse a la forma en que las teclas de escape están configuradas en su Terminal, lo que normalmente hago es usar la flecha izquierda o derecha en iTerm o Terminal.app, ya que no soy fanático de presionar la tecla Intro de inmediato, ¿funciona para usted? ?

Lynxman
fuente
0

Otra posible causa de este problema es tener un TERMvalor incorrecto . Por ejemplo, esto me sucedió cuando estaba usando colores en mi PS1, pero TERMestaba configurado en xterm. Lo cambié xterm-256colory luego CTRL-r comenzó a funcionar correctamente nuevamente.

Tony
fuente