cd-と入力すると以前にアクセスしたパスのリストが表示され、cd -1、-2、-3などと入力するとディレクトリに移動するようにZシェルを設定するにはどうすればよいですか?
3 に答える
あなたがあなたの中にいるならsetopt AUTO_PUSHD
、あなたが変更した各ディレクトリのを自動的に行い.zshrc
ます。ZyXから例をとると:cd
pushd
$ setopt AUTO_PUSHD
$ mkdir -p 1/2/3/4
$ cd 1
$ cd 2
$ cd 3
$ cd 4
次を使用してディレクトリのリストを表示できますdirs
。
$ dirs -v
0 ~/1/2/3/4
1 ~/1/2/3
2 ~/1/2
3 ~/1
4 ~
+
リストをタブで完成させるには、引数と-
引数を使用できますcd
(<TAB>
タブキーを押すことを意味します)。
$ cd +<TAB>
1 -- ~/1/2/3
2 -- ~/1/2
3 -- ~/1
4 -- ~
またはその逆:
$ cd -<TAB>
0 -- ~
1 -- ~/1
2 -- ~/1/2
3 -- ~/1/2/3
次に、番号を選択してそのディレクトリに移動します。
$ cd +2
$ pwd
~/1/2
タブ完全なディレクトリ
私はいつも次のことをする魔法のシーケンスを忘れているので、この部分を説明するために答えを更新しました。
+
とは-
ディレクトリに移動するだけで、スタック内のパスをタブで完了することはできません(つまりcd -2/<TAB>
、何も表示されません)。これを機能させるには、チルダ(~
)を使用できます。
3
この例をより良くするために、いくつかのディレクトリを作成します。
$ mkdir 3/foo 3/bar 3/baz
次に、スタック内のディレクトリを見つけます。
$ cd ~+<TAB>
1 -- ~/1/2/3/4
2 -- ~/1/2/3
3 -- ~/1
4 -- ~
次に、エントリでタブ補完を使用します。
$ cd ~+2/<TAB>
4/ bar/ baz/ foo/
pushd
の代わりにを使用するとcd
、 でディレクトリを一覧表示しdirs
、 で古いディレクトリに cdできますpopd
。のように動作するようにautopush
オプションを設定することもできます。次に例を示します。cd
pushd -q
setopt pushdsilent # Omit printing directory stack
setopt autopush # Make cd push directories onto stack
setopt pushdminus # Invert meanings of +N and -N arguments to pushd
mkdir -p 1/2/3/4
cd 1
cd 2
cd 3
cd 4
popd # Go to previous directory (3) and remove it from directory stack
pushd - # Go to previous directory (4)
pushd -2 # Go 2 directories back the directory stack (2)
pushd
ディレクトリスタックから何も削除せず、ローテーションするだけであることに注意してください。詳細については、を参照man zshbuiltins
してください。
c-minus は、この種の要件に合わせて設計されています。
正規表現の一致をサポートし、md5 ハッシュを使用して重複を無効にしpushd
ます。
簡単にダンプしてロードできます。
この gif は、いくつかの基本的な操作を示しています。