update mac and macos zsh tab-completion zsh-completion

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:

  1. Establezca export LANG=en_US.UTF-8 (simplemente export LANG=en_US.UTF-8 comentario de esa parte en la plantilla .zshrc; exportando LC_ALL , como en la respuesta de @neotohin, en lugar de LANG también puede funcionar, no lo intenté)
  2. 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 de en_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.