Проблемы с приглашением Zsh

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

введите здесь описание изображения

Если я нажму Enter несколько раз, подсказка, похоже, будет исправлена:

введите здесь описание изображения

Моя первая мысль заключалась в том, что это была ошибка в моем пользовательском приглашении, поэтому я заменил приглашение на простое, содержащее только одну цифру:

PROMPT='> '

Но ошибка осталась.

Любые подсказки о том, что может отсутствовать?

Вы можете найти мою тему здесь: http://pastebin.com/cSJwGWKZ.

Обратите внимание, что я использую Oh My Zsh.

РЕДАКТИРОВАТЬ: кажется, что подсказка исправлена, когда я достигаю нижней части терминала (нажимая Enter).


person jviotti    schedule 19.05.2014    source источник


Ответы (1)


Виновником является %{$(echotc DO 1)%} в вашем RPROMPT, который перемещает курсор на одну строку вниз при печати RPROMPT. При достижении нижней части вашего терминала нет дополнительной строки, к которой можно было бы перейти, поэтому курсор просто остается там, где он был.

В зависимости от того, где вы хотите получить RPROMPT, у вас есть два основных варианта:

  • В той же строке, что и курсор ввода (после λ):
    Просто удалите %{$(echotc DO 1)%} из RPROMPT:

RPROMPT='$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%'
  • Одна строка (или любое другое количество строк) над вашим вводом:
    Добавьте %{$(echotc UP 1)%} в начале вашего RPROMPT, это переместит курсор вверх на одну строку, напечатает правильное приглашение и переместится на одну строку вниз:

RPROMPT='%{$(echotc UP 1)%}$(_git_time_since_commit) $(git_prompt_status) ${_return_status}%{$(echotc DO 1)%}'`

Примечание: второй метод может привести к RPROMPT перезаписи частей PROMPT, если и то, и другое становится слишком длинным и/или окно терминала сужается. Если RPROMPT остается на той же строке, что и ввод, он будет скрыт, как только ввод достигнет его (и появится снова, если вы удалите часть ввода).

person Adaephon    schedule 20.05.2014
comment
Большое спасибо за отличное объяснение! - person jviotti; 21.05.2014