ZLE_REMOVE_SUFFIX_CHARS / ZLE_SPACE_SUFFIX_CHARS
Estes parâmetros são usados pelo editor de linha. Em certas circunstâncias, os sufixos (normalmente espaço ou barra) adicionados pelo sistema de conclusão serão removidos automaticamente, porque o próximo comando de edição não era um caractere inserível ou porque o caractere foi marcado como requerendo a remoção do sufixo.
Essas variáveis podem conter os conjuntos de caracteres que farão com que o sufixo seja removido. Se ZLE_REMOVE_SUFFIX_CHARS
estiver definido, esses caracteres farão com que o sufixo seja removido; E seZLE_SPACE_SUFFIX_CHARS estiver definido, esses caracteres farão com que o sufixo seja removido e substituído por um espaço.
Se ZLE_REMOVE_SUFFIX_CHARSnão estiver definido, o comportamento padrão será equivalente a:
ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'
Se ZLE_REMOVE_SUFFIX_CHARSestiver definido, mas estiver vazio, nenhum caractere terá esse comportamento. ZLE_SPACE_SUFFIX_CHARS tem precedência, para que o seguinte:
ZLE_SPACE_SUFFIX_CHARS=$'&|'
causa os caracteres &e |remove o sufixo, mas substitui-o por um espaço.
Para ilustrar a diferença, suponha que a opção AUTO_REMOVE_SLASHesteja em vigor e o diretório DIR tenha sido concluído, com um anexo /, após o qual o usuário digita &. O resultado padrão é DIR&. Com ZLE_REMOVE_SUFFIX_CHARSconjunto, mas sem incluir &o resultado é DIR/&. Com ZLE_SPACE_SUFFIX_CHARSdefinido para incluir &o resultado é DIR &.
Observe que certas conclusões podem fornecer seu próprio comportamento de remoção ou substituição de sufixo, que substitui os valores descritos aqui.
zsh -f(para pular o carregamento da sua configuração). Você notará que o zsh não fará mais isso. Então, você vai ter que cavar (mais provável) em oh-meu-zsh para descobrir como ele está causando que ;-)