Почему знак процента появляется перед каждым приглашением на zsh в Windows?

13

У меня настроен zsh в Windows, и я получаю символ процента (черный на белом (черный фон терминала)) в первой позиции символа в строке чуть выше каждого приглашения.

Обычно это означает, что в конце файла нет новой строки, например, при cat-ing файла.

Это не происходит на моем Mac или даже на Mintty в Windows. Но это происходит в ConEmu и стандартном терминальном приложении, в котором обычно запускается CMD.EXE.

У меня уже есть unsetвсе строки приглашения, precmd()которые я обычно использую для добавления пустой строки над приглашением.

Любая подсказка, что это может быть?

scanny
источник

Ответы:

33

Соответствующий вариант, вероятно PROMPT_SP, пояснение из руководства

Попытайтесь сохранить частичную строку (т. Е. Строку, которая не заканчивается новой строкой), которая в противном случае была бы закрыта командной строкой из-за опции PROMPT_CR. Это работает путем вывода некоторых символов управления курсором, включая ряд пробелов, которые должны переносить терминал на следующую строку, когда присутствует частичная строка (обратите внимание, что это успешно, только если ваш терминал имеет автоматические поля, что типично) ,

Когда частичная строка сохраняется, по умолчанию вы увидите знак + + жирный в конце частичной строки: a %для обычного пользователя или a #для root. Если установлено, параметр оболочки PROMPT_EOL_MARK может использоваться для настройки отображения конца частичных строк.

Итак, либо вы делаете

unsetopt PROMPT_SP

если вас не волнует скрытая строка (однако в вашем случае она кажется пустой строкой, поскольку вы получаете %знак в начале).

Или использовать

setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""

который сохраняет частичные строки, но удаляет %- за счет некоторых пустых строк поверх приглашения.

Чтобы сделать это постоянным, обновите свой ~/.zshrc.

Это слепой выстрел, так как я не могу воспроизвести это поведение в моем cmd.exe.

МРУ
источник
1
Спасибо @mpy, это поставило меня в нужное место, чтобы узнать больше. Вот что я придумал: 1) работают три вещи, больше, если вы комбинируете опции: unsetopt PROMPT_CR; отменить выбор PROMPT_SP; и PROMPT_EOL_MARK = "". 2) установка PROMPT_EOL_MARK = "" избавляет от надоедливого обратного + полужирного символа "%", но все равно добавляет дополнительный перевод строки, поэтому подсказка выглядит иначе, чем на mintty или Mac. 3) В итоге я выбрал untotopt PROMPT_SP как лучший компромисс. 4) использование set и unset не работает, если вы не используете опцию -o. Сетотепт и неотпуск работ. Если вы исправите, я приму ваш ответ :)
сканни
@scanny: я должен извиниться за set. Конечно, это должно было быть setopt- очевидно, я написал свой ответ слишком быстро. Я обновил свой ответ и попытался включить также пункт о пустых строках.
mpy
2

Таким образом, у меня была та же самая проблема с моим zsh + oh-my-zsh.

Я исправил это с помощью mpy и этих строк:

установить PROMPT_CR

setopt PROMPT_SP

export PROMPT_EOL_MARK = ""

Вам просто нужно перейти на -> ~ / .oh-my-zsh / themes / XXXXXX. Вам нужно открыть тему, которую вы используете на oh-my-zsh, так что для меня, например, ее агностер.

Просто откройте этот файл и скопируйте / пропустите эти 3 строки в конце файла.

И это исправлено!

Надеюсь, у вас хороший день, и это поможет некоторым людям.

PEACE

Матье Шталь-Фогт
источник
Пожалуйста, не добавляйте «спасибо» как ответы. Потратьте некоторое время на сайт, и вы получите достаточные привилегии, чтобы выслушать ответы, которые вам нравятся, что является суперпользователем, чтобы сказать спасибо.
DavidPostill
0

Вы можете запустить мятный внутри ConEmu. Это избавило меня от процентов.

Вот что у меня есть для параметров задачи:

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

и команды:

set CHERE_INVOKING=1 & %ConEmuDrive%\\msys64\usr\bin\mintty.exe -i "%ConEmuDrive%\msys64\msys2.ico" -
Билл Бурдик
источник