展开 ZSH 历史记录中的别名

展开 ZSH 历史记录中的别名

我的 zshrc 中有以下别名

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

本质上,我使用 rg (ripgrep) 来显示当前目录和子目录中的所有文件。它通过管道传输到 fzf 中,我可以在其中选择其中的一些,然后在 neovim 中打开它。当一切都说完并完成后,最终的命令最终是这样的

nvim my_file.cpp

然而在我的历史中它只显示nif别名。有什么方法可以nif用它扩展成的命令替换我的历史记录吗nvim my_file.cpp

答案1

让您的别名将其扩展添加到历史记录中print -s

代替:

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

使用

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

同样的事情适用于函数而不是别名,这意味着您可以抽象和重用历史记录保存,而不是在所有别名中复制它。

相关内容