Zsh动态扩展到当前的git root

时间:2013-11-04 02:51:03

标签: git zsh

在Zsh中,我可以获得当前的Git root:

% echo $(git rev-parse --show-toplevel)

我想用触发器以某种方式动态扩展到此字符串。也就是说,我想将一些关键字符串无限扩展到“当前git repo root”并继续从那里选择文件/目录。

例如,如果触发器是“grt”并且我键入:

% copy grt

tab ,“grt”替换为当前的git repo root(如果当前目录中不存在“grt”文件/ dir)。

感觉我不得不以某种方式挂钩完成系统。任何提示?

2 个答案:

答案 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 完成。