Los dos primeros caracteres se repitieron mientras yo Tabsolía completar. En la captura de pantalla a continuación, cd
se repite.
He intentado rxvt-unicdoe, xterm, terminator. Todos estos emuladores de terminal tienen este problema.
Zsh versión 5.0.2, archivo de configuración en-my-zsh
zsh
line-editor
oh-my-zsh
jilen
fuente
fuente
Respuestas:
Si los caracteres en su línea de comando a veces se muestran en un desplazamiento, a menudo esto se debe a que zsh ha calculado el ancho incorrecto para la solicitud. Los síntomas son que la pantalla se ve bien siempre que esté agregando caracteres o moviendo carácter por carácter, pero se vuelve confusa (con algunos caracteres que aparecen más a la derecha de lo que deberían) cuando usa otros comandos que mueven el cursor ( Home, finalización, etc. ) o cuando el comando se superpone a una segunda línea.
Zsh necesita conocer el ancho de la solicitud para saber dónde se ubican los caracteres del comando. Se supone que cada personaje ocupa una posición a menos que se le indique lo contrario.
Una posibilidad es que su solicitud contenga secuencias de escape que no estén delimitadas correctamente. Las secuencias de escape que cambian el color u otros aspectos de formato del texto, o que cambian el título de la ventana u otros efectos, tienen un ancho cero. Deben incluirse dentro de una construcción de llaves porcentuales
%{…%}
. En términos más generales, una secuencia de escape como%42{…%}
le dice a zsh que asuma que lo que está dentro de las llaves tiene 42 caracteres de ancho.Por lo tanto, verifique la configuración de su solicitud (
PS1
,PROMPT
o las variables a las que hacen referencia) y asegúrese de que todas las secuencias de escape (como\e[…m
cambiar los atributos de texto, tenga en cuenta que puede estar presente a través de alguna variable como$fg[red]
) están dentro%{…%}
. Como está usando oh-my-zsh, verifique tanto su propia configuración como las definiciones que está usando de oh-my-zsh.El mismo problema surge en bash. Allí, las secuencias de ancho cero en una solicitud deben incluirse
\[…\]
.Otra posibilidad es que su solicitud contenga caracteres no ASCII y que zsh (o cualquier otra aplicación) y su terminal tengan una idea diferente de cuán anchos son. Esto puede suceder si hay una falta de coincidencia entre la codificación de su terminal y la codificación que se declara en el shell, y las dos codificaciones resultan en anchos diferentes para ciertas secuencias de bytes. Por lo general, puede encontrarse con este problema cuando utiliza un terminal que no es Unicode pero declara una configuración regional Unicode o viceversa.
Las aplicaciones se basan en variables de entorno para conocer la configuración regional; el ajuste relevante es
LC_CTYPE
, que se determina a partir de las variables de entornoLANGUAGE
,LC_ALL
,LC_CTYPE
yLANG
(el primero de estos que es conjunto se aplica). El comandolocale | grep LC_CTYPE
te dice tu configuración actual. Por lo general, la mejor manera de evitar problemas locales es dejar que se establezca el emulador de terminalLC_CTYPE
, ya que sabe qué codificación espera; pero si eso no funciona para usted, asegúrese de configurarloLC_CTYPE
.Los mismos síntomas pueden ocurrir cuando el comando anterior mostraba algún resultado que no terminaba en una nueva línea, de modo que el indicador se muestra en el medio de la línea pero el shell no se da cuenta de eso. En este caso, eso solo sucedería después de ejecutar dicho comando, no de forma persistente.
Si una línea no se muestra correctamente, el comando
redisplay
oclear-screen
(vinculado a Ctrl+ Lde forma predeterminada) lo reparará.fuente
->
, creolocale
y deecho $PS1 | od -t x1
(y lo mismo con cualquier otra variable utilizada por$PS1
).\e{7,8}
para guardar / restaurar estados del cursor.LC_CTYPE
que me arregló. Lo tenía configuradoC
, cuando lo desarmado, todo funcionaba. Gracias.Tuve el mismo problema y encontré mi solución aquí: https://github.com/robbyrussell/oh-my-zsh/issues/5157#issuecomment-226031519 . Simplemente ponga lo siguiente en su
~/.zshrc
.export LC_CTYPE=en_US.UTF-8
fuente
locale
estaba usando, pero funcionó para mí. Esta respuesta proporciona los pasos necesarios para Ubuntu.Tuve este problema en iTerm 2 en macOS. Terminé resolviéndolo yendo a Preferencias -> Perfiles -> Texto y marcando "Usar anchos de Unicode versión 9".
fuente
Tengo este problema usando ubuntu lts docker image (
ubuntu:latest
). Lo arreglé con las instrucciones proporcionadas en la página correspondiente: https://hub.docker.com/_/ubuntufuente