Desabilitar a conclusão dos usuários após um ~ em zsh

1

Eu gosto de usar o recurso de diretórios nomeados do zsh para mover meu sistema de arquivos rapidamente (por exemplo, para que eu possa usar o ~ src para alternar para o meu diretório de código-fonte).

Também gosto dos recursos de preenchimento automático do zsh.

No entanto, eu trabalho em um ambiente com um grande número de usuários, então quando eu digito "cd ~ s" e clico em aba, eu tenho um grande número de possibilidades para combinar com todos os usuários que começam com s, em vez de completar "~ src".

Eu realmente não me preocupo com o preenchimento de nomes de usuário (exceto talvez o meu, mas posso viver sem isso) neste ambiente. Existe uma maneira simples de desabilitar isso, mas continuar expandindo os diretórios nomeados?

    
por bangfalse 07.10.2011 / 20:17

1 resposta

2

A função que é invocada após um ~ é chamada _tilde (porque é declarado com compdef -tilde- ). Defina sua própria função:

_bangfalse_tilde () {
  # The standard _tilde function with users removed
  [[ -n "$compstate[quote]" ]] && return 1
  local expl suf ret=1
  if [[ "$SUFFIX" = */* ]]; then
    ISUFFIX="/${SUFFIX#*/}$ISUFFIX"
    SUFFIX="${SUFFIX%%/*}"
    suf=(-S '')
  else
    suf=(-qS/)
  fi
  _tags users named-directories directory-stack
  while _tags; do
    _requested named-directories expl 'named directory' compadd "$suf[@]" "$@" -k nameddirs && ret=0
    _requested directory-stack && _directory_stack "$suf[@]" && ret=0
  done
  (( ret )) || return 0
}
compdef _bangfalse_tilde -tilde-
    
por 08.10.2011 / 00:42

Tags