Может ли zsh RPROMPT исчезнуть, когда я начну печатать или после запуска команды?

278
Sean Suchter

Я использую RPROMPT, чтобы показать мне некоторую «дополнительную» информацию, на которую я не хочу тратить место PROMPT. Тем не менее, это мешает, когда я хочу вырезать и вставить из моего окна терминала в документы, я должен вручную удалить RPROMPT Cruft.

Есть ли способ заставить Zsh удалить RPROMPT, когда я начинаю вводить команду? Или после того, как я нажму Enter, чтобы запустить текущую команду?

3
[mpy] (https://superuser.com/users/195224/mpy) имеет лучшее решение, но вы можете заставить RPROMPT исчезнуть, когда вы начнете печатать, заполнив его левой клавишей с пробелами для расширения до позиции символа после приглашения , AFH 6 лет назад 1
@AFH: Это тоже отличное решение. Но вычисление ширины подсказки может быть сложным, см., Например, https://unix.stackexchange.com/a/250457/33390. mpy 6 лет назад 0
@mpy - Это не слишком сложно, если основной запрос и RPROMPT имеют фиксированную ширину, хотя для изменения размера окна необходимо будет использовать `$ COLUMNS`. Я написал несколько сценариев для моего приглашения `bash`, чтобы добавить предыдущую новую строку, если предыдущая команда не оставляла курсор в столбце 1, и я полагаю, что подобный код может обрабатывать запросы изменяющейся длины. AFH 6 лет назад 0

1 ответ на вопрос

1
mpy

Вполне возможно, что RPROMPT будет удален после принятия командной строки - zsh имеет право для этой цели (выдержка из справочной страницы zshoptions ):

TRANSIENT_RPROMPT Удалить все правые подсказки с дисплея при принятии командной строки. Это может быть полезно с терминалами с другими методами вырезания / вставки.

Итак, сделайте

setopt TRANSIENT_RPROMPT 

и ваша копия и вставка должны работать безупречно.

Это префектный ответ - он удаляет RPROMPT после выполнения команды, но показывает его до этой точки. Это означает, что мои вырезки и вставки работают хорошо. Sean Suchter 6 лет назад 0

Похожие вопросы