在命令行中切换到下一个/上一个目录的快速方法

在命令行中切换到下一个/上一个目录的快速方法

考虑一个包含子目录sub1、等的目录sub2sub3

现在考虑一下我所处的情况sub3并想要切换到sub4,我会做类似的事情cd ../sub4。不过,我想要next切换到“下一个”目录并prev切换到上一个目录,其中顺序应该是字母数字(也可以选择按mtime)。也许这也可以绑定到一个方便的键盘快捷键。

例如,使用next“when you are in”sub3会将您带到sub4“etc”。

是否有任何内置功能zsh或任何工具可以开箱即用?

答案1

您可以定义cdprevcdnext功能如下:

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]
}

相关内容