zsh с правой подсказкой на том же уровне, что и левая, с использованием prezto

Я новичок в zsh, а также в prezto. Теперь, как и в моей оболочке bash, я хочу, чтобы текущий путь был слева, а моя текущая ветка справа, как вы можете видеть на картинке, пока все хорошо.....

Подсказка

... Теперь проблема в том, что правая часть подсказки находится во второй строке, а не в той, в которой указан путь!

# Define prompts.
PROMPT="
[ ${_prompt_steeef_colors[3]}%n%f@${_prompt_steeef_colors[2]}%m%f ] ${_prompt_steeef_colors[5]}%~%f 
"'$python_info[virtualenv]'"$ "
RPROMPT='${vcs_info_msg_0_}'

(Полный исходный код: здесь)

Как я могу получить и путь, и ветвь в одной строке в моем пользовательском приглашении prezto?


person lony    schedule 31.03.2016    source источник
comment
Я бы предложил расширить PROMPT, чтобы печатать информацию в нужном месте и отказаться от использования RPROMPT. Этот ответ на U&L должен помочь вам в этом. Кроме того, я обнаружил, что использование буквальных символов новой строки в PROMPT может привести к некоторым проблемам: у меня это иногда приводило к тому, что последняя строка предыдущего вывода перезаписывалась подсказкой, когда строка в подсказке была ровно такой же длины, как ширина терминала (что может случаются более длинные пути; и меня очень раздражало, что ls как будто показывал пустой каталог, где я ожидал увидеть один файл).   -  person Adaephon    schedule 01.04.2016
comment
Для меня сложновато :( Я пробовал.   -  person lony    schedule 02.04.2016


Ответы (1)


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

local _lineup=$'\e[1A'
local _linedown=$'\e[1B'
RPROMPT=%{${_lineup}%}"some stuff"%{${_linedown}%}

Я нашел это здесь: https://superuser.com/questions/357107/zsh-right-justify-in-ps1/737454#737454

person Tim Helmstedt    schedule 22.11.2017