bashの「pushd -n」に対応するzshは何ですか?

bashの「pushd -n」に対応するzshは何ですか?

「チルダの略語」(たとえば、ディレクトリリストの2番目の項目を参照)を使用して参照できるように、ディレクトリスタックにディレクトリをプッシュしたいのですが、~1実際にはそのディレクトリに切り替えたくありません。 Bashでは、-nフラグを使用してこれを行うようですpushd

zshでこれに対応するものは何ですか?

答え1

編集できます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

答え2

いつでも押し込み、交換できます。

例えば、pushd -q ~/Downloads; pushd

関連情報