7 votos

Problema terminal/iTerm2: el comando de búsqueda inversa se recorta

Llevo teniendo este problema desde el 10.9.

  1. cd en un camino razonablemente largo, por ejemplo, cd /Volumes/Storage/backup/long/path
  2. Introduzca un comando moderadamente largo, por ejemplo, curl -X GET http://localhost:8888
  3. ctrl + R escriba curl
  4. ctrl + E

El comando que se muestra se desplaza a la izquierda y deja los espacios en blanco a la derecha:

enter image description here

¿Es un bicho conocido o sólo soy yo?

0 votos

La búsqueda inversa es una función del shell, no del terminal. Valdría la pena mencionar qué shell estás usando. bash ? zsh ? Y para responder a la segunda parte de tu pregunta: a mí no me pasa zsh 5.0.7 usando el último iTerm2 en 10.10.2. La edición comienza al final del comando como se esperaba.

0 votos

Estoy usando bash 3.2.53 y el último iTerm2.

0 votos

bash La versión 3.2.57 funciona como se esperaba para mí, aquí. Pone el cursor un carácter más allá del último carácter de la línea cada vez.

6voto

0942v8653 Puntos 3617

Es tu $PS1 - no se ha escapado adecuadamente. Tienes que escapar de todos los personajes no impresos con \[ y \] . Por ejemplo, si tienes

export PS1='\e[32m\u \W\e[0m $ '

tienes que cambiarlo a

export PS1='\[\e[32m\]\u \W\[\e[0m\] $ '

o su cursor aparecerá muy a la derecha porque su shell piensa que su prompt es así de largo, y cuando reescribe el comando no lo encuentra. Molesto, lo sé. En zsh que necesitas usar %{ y %} IIRC.

Y mientras consideras cambiar a otro caparazón, te sugiero peces . Es más bien un salto, pero me mantiene cuerdo.

0 votos

Mi PS1 es PS1='\[\e[0;33m\]\u\[\e[0m\]:\[\e[0;32m\]\w\[\e[0m\]\$ ' No consigo distinguir lo que no se ha escapado.

0 votos

Nota: es innecesario e indeseable export variables de la cáscara. Los sub-shells interactivos ejecutarán el script de inicio y definirán la variable, y generalmente no es deseable que los programas que se ejecutan desde el shell hereden variables específicas del shell.

0 votos

Me alegro de haber encontrado esto: tenía un problema similar en el que la búsqueda inversa + las ediciones insertaban las ediciones en el lugar equivocado, y este arreglo era exactamente la solución para ello.

0voto

shsteimer Puntos 8749

La respuesta desafortunada es: sólo eres tú.

Mi bash es:

bash-3.2$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.

Y iTerm2 es el último lanzamiento y se comporta como se esperaba: Ctrl-E durante una búsqueda histórica inversa me pone al final de la línea, en el carácter después del último carácter de la línea seleccionada.

Podría ser algo en tu bash la configuración que está causando el problema. Puedes apartar tu ~/.bash_profile y archivos ~/.bashrc` y prueba Ctrl-R y Ctrl-E para ver si las cosas se comportan mejor. Si es así, reemplace sus personalizaciones una por una y vea si puede detectar al culpable.

0voto

gcq Puntos 8

Cambiar el export TERM="xterm-color" a export TERM="xterm" en mi .bash_profile arregló el asunto por mí.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X