Dirstack:索引从0开始

Dirstack:索引从0开始

兹什:5.6.2

我使用 archwiki 中的 dirstack:https://wiki.archlinux.org/index.php/zsh#Dirstack

脚本中的所有setopts 均已打开,脚本源自~/.zshrc,

它之前工作并以某种方式将索引更改为0,afaik zsh 的数组应该从 1 开始。

当前意外输出0

dirs -v
0       ~/.cache/downloads/documents
1       ~
2       ~/.cache/zsh
3       ~/.zsh/scripts

尝试 CD

cd -<tab>
0 -- ~/.zsh/scripts
1 -- ~/.cache/zsh
2 -- ~

如果我选择 1 那么它会 cd 到 ~/.zsh/scripts 而不是 ~/.cache/zsh

答案1

后面的~不是 zsh 数组变量中的索引。看

info zsh 'Filename Expansion'

'~' 本身被 $HOME 的值替换。 '~' 后跟 '+' 或 '-' 分别替换为当前或上一个工作目录。

后跟数字的“~”将替换为目录堆栈中该位置的目录。 '~0'相当于'~+','~1'是栈顶。后跟数字的“~+”将替换为目录堆栈中该位置的目录。 '~+0' 等价于 '~+','~+1' 是栈顶。 '~-' 后面跟的数字被替换为距堆栈底部许多位置的目录。 '~-0' 是堆栈的底部。 PUSHD_MINUS 选项交换“~+”和“~-”的效果,它们后面跟着一个数字。

尽管实际上,除非您启用ksh_arraysorpushd_minus选项,否则~1确实会扩展为与$dirstack[1]while~0扩展为相同的内容$PWD~-0与 相同的内容$dirstack[-1]~-1与 相同的内容$dirstack[-2]

相关内容