Итак, я понял это.Оказывается, я не смог правильно избежать цветовых кодов ANSI (я думаю).Везде, где у меня была переменная $ reset_color в переменной PROMPT, я менял ее на% {$ reset_color%}, и она исправляла это.
Я обнаружил эту ссылку сегодня вечером, после того, как связался смоя подсказка - я всегда задавался вопросом , почему примеры подсказок ZSH казались настолько излишне сложными.
Когда вы настраиваете цвета в приглашении zsh
, вы должны экранировать вещи с помощью %{ [...] %}
, чтобы «оболочка знала, что из этих последовательностей нет вывода, и курсор не перемещается».
Если вы не избежите этого, оболочка считает, что ваш курсор сместился (даже если он этого не сделал).Это приводит к запутанным подсказкам и довольно раздражающим визуальным эффектам, когда вы используете завершение табуляции и т.д.подскажите настройки).Как мы видим, курсор начинается не в том месте:
Он должен быть здесь:
И послепри попытке завершить табуляцию без экранирования, все подсказки запутаны в том, где находится текст и где должен находиться курсор:
(курсор должен находиться в концекаталога, а не на полпути).
Таким образом, последовательности подсказок выглядят так:
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
, потому что все должно быть красиво экранировано внутри %{...%}
пар.