考虑一个包含子目录sub1
、等的目录sub2
。sub3
现在考虑一下我所处的情况sub3
并想要切换到sub4
,我会做类似的事情cd ../sub4
。不过,我想要next
切换到“下一个”目录并prev
切换到上一个目录,其中顺序应该是字母数字(也可以选择按mtime
)。也许这也可以绑定到一个方便的键盘快捷键。
例如,使用next
“when you are in”sub3
会将您带到sub4
“etc”。
是否有任何内置功能zsh
或任何工具可以开箱即用?
答案1
您可以定义cdprev
和cdnext
功能如下:
cdnext cdprev() {
local dirs i
dirs=(${PWD%/*}/*(nN-/))
if (($#dirs <= 1)); then
print -ru2 No other dir in $PWD:h
return 1
fi
i=$dirs[(Ie)$PWD]
if [[ $0 = cdnext ]]; then
((i++))
else
((i--))
fi
((i <= $#dirs)) || i=1
((i >= 1 )) || i=-1
print -ru2 $0: ${(D)dirs[i]}
cd $dirs[i]
}