TL; DR
Tudo o que você precisa fazer é colocar isso no seu ~/.zshrc
(ou no mesmo arquivo que o seu tema de prompt):
ZLE_RPROMPT_INDENT=0
Detalhes
Nas versões do ZSH anteriores à 5.0.2, um valor no código-fonte C do ZSH chamado rprompt_off
(que definia o deslocamento da margem direita) era codificado para 1
.
Mas na versão 5.0.5, os desenvolvedores acrescentaram a capacidade de substituir esse valor padrão, definindo a ZLE_RPROMPT_INDENT
variável de ambiente.
A justificativa para esse "recuo" é porque alguns terminais mais antigos começariam a rolar se a última célula da tela tivesse um caractere.
Para versões do ZSH anteriores à 5.0.5
Se você estiver em uma versão mais antiga do ZSH e não puder atualizar, ainda poderá se livrar desse espaço fazendo o seguinte:
- Engane o ZSH pensando que seu RPROMPT é um caractere mais curto do que realmente está usando o wrapper de sequência invisível padrão:
%{...%}
- Em seguida, enviando uma sequência de escape do cursor para trás usando terminfo:
%{terminfo[cub1]}
Confira as perguntas frequentes e esta mensagem na lista de discussão para obter mais informações.
Anthony Michael Cook
fonte
%git<Tab>
transforma-se em%ggit
Enviei um relatório de bug para os mantenedores do zsh, mas parece que esse comportamento ocorre por design. Esse problema, no entanto, me incomodou tanto que decidi corrigir e compilar o zsh como uma correção temporária. Se você estiver no OS X e usar o Homebrew (você deveria), poderá instalar o zsh, incluindo o meu patch, executando:
você provavelmente vai querer adicionar
/usr/local/bin/zsh
a/etc/shells
echsh -s /usr/local/bin/zsh
depois. Por fim, aqui está o diff bruto para quem estiver interessado:fonte
Eu acho que o espaço em branco à direita é codificado. Mas você pode enganar
zsh
com a seguinte configuração:que em princípio diz
zsh
que a estrela não ocupa caracteres; deman zshmisc
:A desvantagem é que você "desloca" o espaço em branco para o final de
PROMPT
:Os
|
símbolos indicam as bordas do terminal, ■ o cursor.Outra idéia seria aumentar
COLUMNS
em 1:Mas é preciso pensar em uma maneira de fazer isso apenas para a renderização imediata, mas não para os comandos. E isso engolirá o último caractere em cada linha em uma linha de comando com várias linhas.
fonte