2

在 Zsh 中,我可以获得当前的 Git 根目录:

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

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

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

% copy grt

tab, "grt" 被当前 git repo root 替换(如果当前目录中不存在 "grt" 文件/目录)。

感觉就像我必须以某种方式进入完成系统。有什么提示吗?

4

2 回答 2

2

您可以使用bindkey

bindkey -s grt '$(git rev-parse --show-toplevel)\t'

尾随\t字符触发命令替换的扩展。如果您省略它,grt只需扩展为$(...),然后您可以根据需要完成它Tab

于 2013-12-02T20:31:30.800 回答
2

一种方法是设置您.zshrc喜欢的功能:

function grt()
{
    git rev-parse --show-toplevel
}

然后使用(两个例子):

cd $(grt)
cp file1 $(grt)
于 2013-11-04T02:59:22.523 回答