El cursor iTerm2 no vuelve al comienzo de la línea

No estoy seguro de si me falta algún tipo de configuración aquí, pero en ocasiones mi cursor no puede volver al principio de la línea donde comienza el comando. Si presiono FN+Flecha izquierda, va unos pocos caracteres después del comienzo del comando, si presiono FN+Flecha derecha, va muy por detrás del final de la línea. Parece que piensa que toda la línea está desplazada hacia la derecha. Ver capturas de pantalla adjuntas. No pude reproducir esto a propósito. Sucede con todo tipo de comandos diferentes de manera bastante no determinista :-(. Cualquier idea es bienvenida, gracias.FN + flecha izquierda FN + flecha derecha

mateo

¿Sucede esto si usa un indicador de shell menos modificado? Intente cambiar a una configuración de shell súper vainilla.
¿Quieres decir como plan cmd prompt, no personalizado?
Sí. Si esto es bash, intente algo como for f in ~/.bash{rc,_profile}; do mv "${f}" "${f}.save"; doney luego obtenga una nueva ventana de iTerm2. ¿Sigues teniendo el problema después de hacer eso?
Bueno, eso ayudó :-). Sin embargo, ¿hay alguna manera de mantener el indicador cmd personalizado y resolver este problema? Todavía no tengo claro por qué sucede esto. Uso cmd prmpt personalizado:export PS1="$(tput bold)$(tput setaf 6)\t [\W]$(tput sgr0): "

Respuestas (2)

Entonces, nuestra sesión de depuración ha determinado que es su personalización rápida, no iTerm2. Dijiste que tu personalización rápida es:

export PS1="$(tput bold)$(tput setaf 6)\t [\W]$(tput sgr0): "

La respuesta simple es no usar tputpara personalizar su aviso. Es el sgr0comando de reinicio el que probablemente está haciendo más de lo que usted quiere que haga y estropeando los movimientos de texto almacenados en búfer.

Intentemos hacer esto con códigos ANSI directamente. Si usa una configuración de esquema de color ANSI como esta, puede probar:

export PS1="${normal}${bold_blue}\t [\W]${normal}: "

Eso funciona perfectamente para mí con combinaciones de flechas Fn para navegar por la línea.

tputes una buena idea, pero proviene del ncursespaquete, que es una forma muy avanzada de hacer interfaces de usuario en las interfaces de símbolo del sistema mediante la explotación de todo tipo de cosas de la terminal. Lo mejor es apegarse a ANSI aquí.

Una última cosa. Estoy probando este aviso, pero me da el error ': mala sustitución': export PS1="${color reset}${color blue bold}\t [\W]${color reset}: ". ¿Algunas ideas?
Bueno color, es una llamada de función, pero está tratando de usarla como una especie de referencia variable. Prueba export PS1="$(color reset)$(color blue bold)\t [\W]$(color reset): "en su lugar.
Ah, ya veo. De hecho, no importé ningún otro script del enlace de GitHub. Pensé que coloren realidad era algún tipo de comando (aunque no funcionó en bash ni en zsh). Ahora veo que es una función. Jugaré más con él y veremos qué puedo hacer que funcione. Gracias por toda la ayuda :-).
Si esto no funciona, coloque un \[antes de cada secuencia que no se imprima (es decir, una variable de código de color) y \]después.
Tuve los mismos síntomas sin tput. Para mí, la solución fue cambiar, por ejemplo, $BOLDen ${BOLD}las referencias de variables en mi PS1:RED='\[\033[31m\]' GREEN='\[\033[32m\]' YELLOW='\[\033[33m\]' BLUE='\[\033[34m\]' MAGENTA='\[\033[35m\]' CYAN='\[\033[36m\]' BOLD='\[\033[1m\]' NORMAL='\[\033[0m\]' INVERT='\[\033[7m\]' UNINVERT='\[\033[27m\]' export PS1="${BOLD}\$(which_newton)${NORMAL}${BOLD}\$(git_branch)${BLUE}\$(gradle_status)\W/${NORMAL} $ "

Me encontré con el mismo problema, con exactamente las mismas cosas (iTerm, bash y tput). Agregué $(tput sgr0)al frente y comencé un bash sub shell, el problema desaparece y Ctrl + Afunciona Ctrl + Ecorrectamente a partir de ese momento.