Вы можете получить желаемый (если я думаю правильно) эффект, используя функцию precmd
, которая выполняется каждый раз перед отображением подсказки, чтобы напечатать дополнительные строки над подсказкой.
Используйте, например, этот код
precmd() {
LEFT="The time is"
RIGHT="$(date) "
RIGHTWIDTH=$(($COLUMNS-${#LEFT}))
print $LEFT${(l:$RIGHTWIDTH::.:)RIGHT}
}
PS1="foo > "
RPS1="bar"
объяснение
$LEFT
и $RIGHT
содержат строки для левой и правой стороны, соответственно. Вы можете использовать вывод команды с синтаксисом $(...)
.
$RIGHTWIDTH
- это разница текущей ширины терминала (хранится в zsh в параметре $COLUMNS
) и ширины левой строки. $((...))
для математических выражений
- Волшебство приходит с
${(l:$RIGHTWIDTH::.:)RIGHT}
, где параметр $RIGHT
дополняется слева (l
) точками (пропустите последний :.:
Если вам нужны пробелы) до длины $RIGHTWIDTH
.
- Распечатать дополнительную строку. Повторите команды, если вы хотите больше строк.
PS1
и RPS1
короче для PROMPT
и RPROMPT
.
демонстрация
The time is............................................Fri, Sep 18, 2015 8:20:22 PM
foo > _ bar