Fish shell中是否有类似于Zsh路径替换的功能?

3

我正在尝试在Mac OS X中使用Fish shell,并且想知道是否有与Zsh中相同类型的路径替换功能,例如:

user@machine ~> % cd /usr/www/site1/current/log
user@machine /usr/www/site1/current/log
%> cd site1 site2
/usr/www/site2/current/log
user@machine /usr/www/site2/current/log
%>

这个例子是从SlideShare的Why Zsh is Cooler than Your Shell中引用并进行了定制。

我尝试在Fish中使用相同的语法,但似乎不起作用。 我在Fish文档中也没有找到“路径替换”的任何信息。


1
你会发现Fish对于颜色和Tab补全非常好用,但它并不具备许多这类功能:http://fishshell.com/docs/current/design.html - glenn jackman
1个回答

5

显然,Fish默认不支持路径替换。

我通过在~/.config/fish/functions中创建一个简单的自定义函数cd.fish来解决这个问题:

function cd
    if test (count $argv) -eq 2
            builtin cd (echo $PWD|sed -e "s/$argv[1]/$argv[2]/")
    else
            builtin cd $argv
    end
end

如果你习惯于使用Zsh,那么这可能不是完美的选择,但可以使问题示例正常工作。

注意:Fish已经有了自己版本的cd函数,因此最好将其纳入Fish的开箱即用版本,而不是完全替换它。这只是一个为了清晰起见的部分示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接