假设我 cd 到/usr/local/bin
但我想将我的 pwd 更改为/usr/bin
,我该如何使用 zsh 做到这一点?我知道我可以做类似cd /a/b/
然后 的事情cd b c
,以便将我的 pwd 更改为/a/b
,但我不太清楚如何做我想做的事。
答案1
鉴于 zsh 的灵活功能cd
,至少有三种方法可以满足您的需求。您可以写cd /usr/local /usr
或cd local /
或cd local/bin bin
。人们或许可以想出更多的解决方案。
cd
zsh 中的语法是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
。