TL; DR
Все, что вам нужно сделать, это поместить это в свой файл ~/.zshrc
(или в тот же файл, что и тема приглашения):
ZLE_RPROMPT_INDENT=0
Детали
В версиях ZSH, ведущих до 5.0.2, значение в исходном коде C языка ZSH rprompt_off
(которое устанавливает смещение правого поля) было жестко запрограммировано 1
.
Но в версии 5.0.5 разработчики добавили возможность переопределить это значение по умолчанию, установив ZLE_RPROMPT_INDENT
переменную среды.
Обоснование для этого «отступа» потому , что некоторые старые терминалы начнут скроллинг , если последняя ячейка дисплея имела характер в нем.
Для версий ZSH до 5.0.5
Если вы используете старую версию ZSH и не можете обновить ее, вы все равно можете избавиться от этого места, выполнив оба следующих действия:
- Trick ЗШ, думая , ваш RPROMPT является характер короче , чем на самом деле использует стандартную невидимая последовательность обертку:
%{...%}
- Затем отправляем escape-последовательность курсора назад с помощью terminfo:
%{terminfo[cub1]}
Проверьте FAQ и это сообщение в списке рассылки для получения дополнительной информации.
Энтони Майкл Кук
источник
%git<Tab>
трансформируется в%ggit
Я отправил отчет об ошибке сопровождающим zsh, но, похоже, это поведение разработано. Эта проблема, однако, настолько раздражала меня, что я решил исправить и скомпилировать zsh как временное исправление. Если вы используете OS X и используете Homebrew (вам следует), вы можете установить zsh, включая мой патч, запустив:
Вы, вероятно , захотите добавить
/usr/local/bin/zsh
к/etc/shells
иchsh -s /usr/local/bin/zsh
после этого. Наконец, вот сырье для всех, кто заинтересован:источник
Я думаю, что пустое пространство справа жестко запрограммировано. Но вы можете обмануть
zsh
со следующими настройками:что в принципе говорит
zsh
о том, что звезда не занимает никаких символов; отman zshmisc
:Недостаток в том, что вы «сдвигаете» пробел до конца
PROMPT
:Эти
|
символы обозначают концевые ребра, ■ курсор.Другая идея заключается в увеличении
COLUMNS
на 1:Но нужно придумать, как это сделать только для быстрого рендеринга, но не для команд. И это поглотит последний символ в каждой строке многострочной командной строки.
источник