从 zsh 中的当前目录中删除目录部分

从 zsh 中的当前目录中删除目录部分

假设我 cd 到/usr/local/bin但我想将我的 pwd 更改为/usr/bin,我该如何使用 zsh 做到这一点?我知道我可以做类似cd /a/b/然后 的事情cd b c,以便将我的 pwd 更改为/a/b,但我不太清楚如何做我想做的事。

答案1

鉴于 zsh 的灵活功能cd,至少有三种方法可以满足您的需求。您可以写cd /usr/local /usrcd local /cd local/bin bin。人们或许可以想出更多的解决方案。

cdzsh 中的语法是cd OLD NEW.此命令$PWD与您的 进行匹配OLD,并将任何匹配的部分替换为NEW。您应该记住,它是cd相对于您当前的目录工作的,因此如果您cd /usr/local usr在 中写入/usr/local/bin,zsh 会给您一个错误,因为不存在这样的目录/usr/local/bin/usr/bin。始终注意斜线。

答案2

您可以使用的两个参数形式cd替换当前工作目录的子字符串。例如,要删除/local,您可以使用

cd /local ''

由于多个斜杠没有任何区别,您也可以将其写为cd /local /(结果为/usr//bin,然后双斜杠被简化为单斜杠) 或cd local /(也导致/usr//bin)。

另一种方法是使用命令行版本。使用默认设置,cd $PWD在命令行中键入,然后按Tab:变量替换将替换为变量的值,您可以随意编辑它。在下面setopt auto_cd,你不需要cd先写。如果您的配置导致Tab无法扩展变量,请使用调用 zle 函数的任何键expand-or-complete而不是complete-word

相关内容