現在のエイリアスセットに基づいて新しいエイリアスセットを作成しますか(例:gst -> dst)。

現在のエイリアスセットに基づいて新しいエイリアスセットを作成しますか(例:gst -> dst)。

zshプラグインのgitエイリアスを使用しています。https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git

したがって、次のようなgitエイリアスがあります。

gst # git status
ga # git add
gc "commit" # git commit -v "commit"
...

...また、git bare repoを使用してすべてのドットファイルをバックアップします。https://github.com/Anthonyive/dotfiles/blob/0706bc81daa3aeb7899b506cd89d4ab78fc7b176/USAGE.md

特に、git bare repoテクノロジは、gitコマンドのエイリアスを次のように指定しますdotfiles

alias dotfiles='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
alias d='dotfiles'

それでは、すべてのgit aliasコマンドをどのようにマッピングしますかd?良い:

dst # similar to gst, but uses the dotfiles alias
da # similar to ga
dc "commit" # similar to gc "commit"
...

一つずつマッピングするのは面倒そうです...

ベストアンサー1

連想配列aliasesすべてのエイリアス定義を含みます。

for name in "${(@k)aliases}"; do
  if [[ $name == g* && $aliases[$name] == 'git '* ]]; then
    alias d${name#g}="dotfiles ${aliases[$name]#git }"
  fi
done

または、dエイリアスを次のgitコマンドが必要な関数に変更することもできますが、最初にシェルエイリアスを展開して先行しますgit

alias d='d ' # expand aliases after d
function d {
  if [[ $1 == "git" ]]; then shift; fi
  dotfiles "$@"
}

その後d gst実行されますdotfiles statusd gc myfile実行されますdotfiles commit myfiled ls-tree実行されますdotfiles ls-tree。完了は可能ですが、簡単ではありません。

おすすめ記事