macos - mac - zsh themes linux
FinalizaciĆ³n de la pestaƱa Zsh duplicando el nombre del comando (5)
Es probable que el problema surja de los corchetes %{
%}
mal colocados que le dicen a zsh que el texto que hay dentro tiene un ancho de cero. Las únicas cosas que deben encerrarse en ellas son las secuencias de escape que cambian el color o la negrita del texto. Si está usando zsh nuevo (> = 4.3. {Versión desconocida}) Incluso sugeriría usar %F{color}...%f
, %K{color}...%k
, %B...%b
lugar de %{${fg[green]}%}
o lo que tienes allí.
El problema con ellos es que no hay forma de consultar el terminal con una pregunta como: "Oye, imprimí un texto. ¿Dónde está el cursor ahora? ”Y zsh tiene que calcular la longitud de su mensaje por sí mismo. Cuando escriba algún texto y pida a zsh que complete, zsh dirá que terminal mueva el cursor a una ubicación específica y escriba el cmdline completado allí. Con los corchetes %{%}
fuera de lugar, esta ubicación específica es incorrecta.
Estoy en OS X Mountain Lion, ejecutando el shell ZSH incluido (4.3.11) con Oh-My-ZSH instalado en la parte superior.
Cuando se usa la finalización de tabulación con comandos como homebrew, cuando ZSH lista los comandos disponibles, también está duplicando el comando. Por ejemplo:
$ brew {tab}
resultará en:
$ brew brew
[list of homebrew commands]
No estoy seguro de qué está causando este error, ya que cuando redimensiono la ventana del terminal, la primera instancia del nombre del comando desaparece.
Si presiono la tecla de retroceso cuando se muestran los duplicados, solo puedo eliminar la segunda instancia del comando, zsh no me permitirá retroceder más. Además, si elimino el duplicado con retroceso, zsh actúa como si no hubiera ningún comando escrito.
Mi .zshrc junto con todos mis otros archivos de configuración se pueden encontrar en https://github.com/daviesjamie/dotfiles
ACTUALIZACIÓN: Encontré esta publicación sobre alguien que tiene el mismo problema en Ubuntu. Sin embargo, no entiendo la solución dada, ¿y ni siquiera estoy seguro de si se aplica a mi configuración?
Es un tema antiguo, pero tuve un problema similar en mi configuración de zsh con la configuración de oh-my-zsh.
La configuración de export LC_ALL=en_US.UTF-8
solucionó el problema.
Este efecto también podría reproducirse si utiliza alguno de los caracteres UTF-8 de fantasía como la flecha, el carácter de "rama de git" y así sucesivamente.
Simplemente elimine estos caracteres del aviso y no se producirá la duplicación.
También añadiendo
exportar LC_ALL = en_US.UTF-8
export LANG = en_US.UTF-8
a ~ / .profile puede ayudar
Mi solución para hacer que tanto el trabajo local como el ssh sea algo así como una combinación de las respuestas de @Marc y @nimotohin:
- Establezca
export LANG=en_US.UTF-8
(simplementeexport LANG=en_US.UTF-8
comentario de esa parte en la plantilla .zshrc; exportandoLC_ALL
, como en la respuesta de @neotohin, en lugar deLANG
también puede funcionar, no lo intenté) - Desmarque "Establecer las variables de entorno de configuración regional en el inicio" en la sección "Avanzadas" del perfil de Terminal (razón: esa configuración establece
LC_CTYPE=UTF-8
lugar deen_US.UTF-8
, que frena la configuración regional para mí en ssh)
Si usa iTerm en Mac, asegúrese de marcar "Establecer variables de configuración regional automáticamente" en sus preferencias de perfil. Lo tuve sin marcar para una conexión SSH y resultó en el mismo error y lo solucioné al dejar esa opción marcada.