Tab は行の先頭ではなくグローバルエイリアスを完成します。

Tab は行の先頭ではなくグローバルエイリアスを完成します。

私にはこのような別名が多い

alias -g foo=cmd1
alias -g faz=cmd2
alias -g fam=cmd3

シェルで(私はzshを使用しています)次のように入力したい

echo fa<TAB>

faz入力するように求めるメッセージfam

完全エイリアスオプションが間違っているようで(動作しない)、cmd*エイリアス自体を完了せずに完了するためにcompdefが使用されます。

行の先頭にエイリアスを使用すると、するタブの完成を提供します。行の他の場所で使用される場合にのみ有効です。

oh-my-zshに類似グローバルエイリアスフルネームを入力してスペースを押してエイリアスを拡張するのに機能しますが、フルネームが覚えていない場合はエイリアスを拡張できることを探しています。

答え1

ファイルに以下を追加します~/.zshrc

autoload -Uz compinit
compinit
# The code below should come _after_ initializing the completion system.

# Autoload the `galiases` table.
zmodload -Fa zsh/parameter p:galiases

# Whenever a completion is attempted, first run `_galiases`.
compdef _galiases -first-

_galiases() {
  # Add the completions to the `aliases` group.
  local expl
  _description aliases expl 'alias'

  # Add the keys from `galiases` as the actual completions.
  compadd "$expl[@]" -Q -k galiases
}

(複数の完成関数を定義できないことに注意してください-first-。最初に呼び出す必要がある他の完成関数がある場合は、その関数をすべて呼び出す親関数を定義する必要があります。)

文書:

関連情報