Как настроить Z-оболочку так, чтобы набирать cd - дает вам список ранее посещенных путей, а cd -1, -2, -3 и т.д. затем приведет вас к каталогам?
Cd -1, -2, -3 и т.д. в Z-оболочке
Ответ 1
Если у вас setopt AUTO_PUSHD
в .zshrc
, то cd
автоматически выполнит pushd
каждого каталога, в который вы входите. Взяв пример из ZyX:
$ 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/
Ответ 2
Если вы используете 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
.