¿Por qué aparece un signo de porcentaje antes de cada solicitud en zsh en Windows?

13

Estoy configurando zsh en Windows y obtengo un símbolo de porcentaje inverso (negro sobre blanco (fondo de terminal negro)) en la posición del primer carácter en la línea justo arriba de cada mensaje.

Por lo general, eso significa que no hay una nueva línea al final del archivo, por ejemplo, al hacer catclic en un archivo.

No sucede en mi Mac o incluso en Mintty en Windows. Pero sucede en ConEmu y la aplicación de terminal estándar en la que generalmente se ejecuta CMD.EXE.

Ya tengo unsettodas mis cadenas de solicitud, así como las precmd()que normalmente uso para agregar una línea en blanco sobre la solicitud.

¿Alguna idea de lo que podría ser?

scanny
fuente

Respuestas:

33

La opción relevante es PROMPT_SP, probablemente , una explicación del manual.

Intente preservar una línea parcial (es decir, una línea que no finalizó con una nueva línea) que de lo contrario estaría cubierta por el símbolo del sistema debido a la opción PROMPT_CR. Esto funciona al generar algunos caracteres de control del cursor, incluida una serie de espacios, que deberían hacer que el terminal se ajuste a la siguiente línea cuando hay una línea parcial (tenga en cuenta que esto solo tiene éxito si su terminal tiene márgenes automáticos, lo cual es típico) .

Cuando se conserva una línea parcial, de forma predeterminada verá un carácter inverso + negrita al final de la línea parcial: a %para un usuario normal o a #para root. Si se establece, el parámetro de shell PROMPT_EOL_MARK se puede usar para personalizar cómo se muestra el final de las líneas parciales.

Entonces, o haces un

unsetopt PROMPT_SP

si no le importa la línea cubierta (sin embargo, en su caso, parece ser una línea vacía, ya que obtiene el %letrero al principio).

O usar

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""

que conserva líneas parciales, pero elimina %- a costa de algunas líneas vacías sobre el indicador.

Para hacer esto permanente, actualice su ~/.zshrc.

Este es un tiro ciego, ya que no puedo reproducir este comportamiento en mi cmd.exe.

mpy
fuente
1
Gracias @mpy, esto me puso en el lugar correcto para obtener más información. Esto es lo que se me ocurrió: 1) tres cosas funcionan, más si combina opciones: desarmar PROMPT_CR; deshacer la conexión de PROMPT_SP; y PROMPT_EOL_MARK = "". 2) establecer PROMPT_EOL_MARK = "" elimina el molesto carácter inverso + negrita "%", pero aun así agrega un avance de línea adicional, por lo que el aviso se ve diferente que en mintty o Mac. 3) Terminé yendo con PROMPT_SP no seleccionado como el mejor compromiso. 4) usar set y unset no funciona a menos que use la opción -o. trabajo setopt y no setopt. Si lo arreglas, aceptaré tu respuesta :)
scanny
@scanny: Tengo que disculparme por el set. Por supuesto, debería haber sido setopt, obviamente escribí mi respuesta demasiado rápido. Actualicé mi respuesta e intenté incluir también el punto sobre las líneas vacías.
mpy
2

Así que tenía exactamente el mismo problema con mi zsh + oh-my-zsh.

Lo arreglé con la ayuda de mpy y esas líneas:

setopt PROMPT_CR

setopt PROMPT_SP

export PROMPT_EOL_MARK = ""

Solo tiene que ir a -> ~ / .oh-my-zsh / themes / XXXXXX. Debe abrir el tema que está usando en oh-my-zsh, así que para mí, por ejemplo, su agnoster.

Simplemente abra este archivo y copie / pegue esas 3 líneas al final del archivo.

¡Y está arreglado!

Espero que tengas un buen día y que esto ayude a algunas personas.

PAZ

Mathieu Stahl-vogt
fuente
Por favor no agregue "gracias" como respuestas. Invierta algo de tiempo en el sitio y obtendrá los privilegios suficientes para votar las respuestas que le gusten, que es la forma de Súper Usuario de decir gracias.
DavidPostill
0

Puede ejecutar mintty dentro de ConEmu. Eso eliminó los porcentajes para mí.

Esto es lo que tengo para los parámetros de la tarea:

/icon "%ConEmuDrive%\msys64\msys2.ico"

y comandos:

set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
Bill Burdick
fuente