假設我 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
。