cd-と入力すると以前にアクセスしたパスのリストが表示され、cd -1、-2、-3などと入力するとディレクトリに移動するようにZシェルを設定するにはどうすればよいですか?
3 に答える
あなたがあなたの中にいるならsetopt AUTO_PUSHD、あなたが変更した各ディレクトリのを自動的に行い.zshrcます。ZyXから例をとると:cdpushd
$ 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オプションを設定することもできます。次に例を示します。cdpushd -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 は、いくつかの基本的な操作を示しています。
