У меня есть пользовательское приглашение в Zsh. В конце я закрашиваю последний символ красным или зеленым в зависимости от того, была ли последняя команда успешной или неудачной. Однако, когда я делаю это, я не могу go вернуть назад и отредактировать предыдущие команды.
Это код подсказки:
%{%F%(?.$fg[green].$fg[red])>%f%}
Пример рабочего процесса :
- Я ввожу команду, которая переносится на новую строку:
> printf "%s\n" "This is a very long printf. How long is it? It's so very very long that it wraps onto the next line."
После этого я нажимаю стрелку вверх и изменяю команду, удаляя и вводя заново «is it». Теперь командная строка показывает:
> printf "%s\n" "This is a very long printf. How long is it It's so very very long that it wraps onto the next line."
Это распечатывает:
This is a very long printf. How long iis it It's so very very long that it wraps onto the next line.
Я предполагаю, что я не завершаю цветовые коды каким-либо образом, так что приглашение перетекает в фактические команды I ' Я пытаюсь войти. Он ведет себя плохо только тогда, когда приглашение переходит на новую строку. Может кто-нибудь увидеть, что не так с моей подсказкой?
Я убедился, что без этого фрагмента кода остальная часть подсказки работает нормально и ведет себя так, как вы ожидаете.