Esse recurso pode ser ajustado com ZLE_REMOVE_SUFFIX_CHARS e ZLE_SPACE_SUFFIX_CHARS parâmetros da shell.
-
Se a variável
ZLE_REMOVE_SUFFIX_CHARSestiver definida, ela deverá conter um conjunto de caracteres que, quando digitado, fará com que os sufixos automáticos do preenchimento sejam removidos. SeZLE_REMOVE_SUFFIX_CHARSnão estiver definido, o comportamento padrão será igual aZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|' -
Os caracteres definidos em
ZLE_SPACE_SUFFIX_CHARSsuffices são substituídos por um espaço. Ele também tem precedência sobreZLE_SPACE_SUFFIX_CHARS
Assim, para obter o comportamento desejado, deve ser suficiente definir
ZLE_SPACE_SUFFIX_CHARS=$'|&'
Parece que as , inseridas automaticamente nas enumerações de chave são sempre removidas ao digitar } .
Embora zshparam(1) mencione que certos sistemas de completação podem sobrescrever este comportamento, parece funcionar muito bem com o "novo" compsys (você o chamou compadd )