Zsh
bash中“pushd -n”的zsh等價物是什麼?
我想將一個目錄推送到目錄堆棧上,以便使用“波浪號速記”來引用它(例如,
~1
指的是目錄列表中的第二個條目),但我不想實際切換到該目錄。在 bash 中,這似乎可以使用-n
標誌來完成pushd
。zsh中的等價物是什麼?
您可以編輯
dirstack
變數。function insertd { emulate -L zsh typeset -i n=0 while [[ $1 == [+-]<-> ]]; do n=$1 shift done if (($# != 1)); then echo 1>&2 "Usage: insertd [+N|-N] DIR" return 3 fi dirstack=($dirstack[1,$n] $1 $dirstack[$n,-1]) }
如果您想將此行為添加到
pushd
自身,則可以將其設為函式。function pushd { if [[ $1 == -n ]]; then shift insertd "$@" else builtin pushd "$@" fi }
這個簡單的版本不會
-n
像 bash 一樣對待和另一個選項的組合。您甚至可以直接編輯變數。
vared dirstack