25

cd-と入力すると以前にアクセスしたパスのリストが表示され、cd -1、-2、-3などと入力するとディレクトリに移動するようにZシェルを設定するにはどうすればよいですか?

4

3 に答える 3

61

あなたがあなたの中にいるなら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/
于 2011-01-19T20:02:16.377 に答える
7

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してください。

于 2010-10-21T12:19:30.307 に答える
0

c-minus は、この種の要件に合わせて設計されています。

正規表現の一致をサポートし、md5 ハッシュを使用して重複を無効にしpushdます。

簡単にダンプしてロードできます。

この gif は、いくつかの基本的な操作を示しています。

cminusの使い方

https://github.com/whitebob/cminusで確認できます

于 2018-12-25T15:35:50.783 に答える