ZSH 履歴のエイリアスを展開する

ZSH 履歴のエイリアスを展開する

私のzshrcには次のエイリアスがあります

alias nif='nvim $(rg --files | fzf -m || echo +qa)'

基本的に、私は rg (ripgrep) を使用して、現在のディレクトリとサブディレクトリにあるすべてのファイルを表示します。これは fzf にパイプされ、そこでいくつかのファイルを選択して、neovim で開きます。結局、最終的なコマンドは次のようになります。

nvim my_file.cpp

しかし、私の履歴にはエイリアスだけが表示されます。のように展開されたコマンドで履歴nifを置き換える方法はありますか?nifnvim my_file.cpp

答え1

エイリアスが自身の拡張を履歴に追加するようにしますprint -s

の代わりに:

alias nif='nvim $(...)'

使用

alias nif='f=$(...); print -rs nvim $f; nvim $f'

同じことはエイリアスではなく関数でも機能します。つまり、すべてのエイリアスで履歴保存を複製するのではなく、抽象化して再利用できます。

関連情報