在Zsh中,我可以获得当前的Git root:
% echo $(git rev-parse --show-toplevel)
我想用触发器以某种方式动态扩展到此字符串。也就是说,我想将一些关键字符串无限扩展到“当前git repo root”并继续从那里选择文件/目录。
例如,如果触发器是“grt”并且我键入:
% copy grt
tab ,“grt”替换为当前的git repo root(如果当前目录中不存在“grt”文件/ dir)。
感觉我不得不以某种方式挂钩完成系统。任何提示?
答案 0 :(得分:2)
一种方法是在.zshrc
中设置一个功能,如:
function grt()
{
git rev-parse --show-toplevel
}
然后使用(两个例子):
cd $(grt)
cp file1 $(grt)
答案 1 :(得分:2)
您可以使用bindkey
:
bindkey -s grt '$(git rev-parse --show-toplevel)\t'
尾随\t
字符触发命令替换的扩展。如果省略它,grt
只会扩展为$(...)
,然后您可以根据需要使用 Tab 完成。