popd для управления каталогами на основе cdr в zsh

popd для управления каталогами на основе cdr в zsh

Я недавно начал использоватьcdrдля zshзапоминания последних каталогов. Я использовал pushdи тому подобное. Одна вещь, которой мне не хватает, это popd, которая по сути означает «Я закончил использовать этот каталог, верните меня туда, где я был раньше, и избавьтесь от этой записи в стеке».

Можно ли сделать подобную семантику с cdr?

Редактировать: изменить «историю» на «стек».

решение1

Вы можете ввести

cdr -p $PWD

и cdrволячерносливкаталог, в котором вы находитесь, из его списка. Чтобы удалить другой каталог, просто замените его $PWDабсолютным путем к каталогу, который вы хотите удалить. Или, если вы хотите удалить целый набор каталогов, вы также можете использовать шаблоны glob в аргументе. И прежде чем cdr -pвносить какие-либо изменения, он покажет вам, какими будут результаты ваших действий, и попросит вас подтвердить, так что вам не придется беспокоиться о «случайном удалении всего». Смотритеhttp://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Options-2для получения дополнительной информации.


Чтобы вернуться в предыдущий каталог, в котором вы находитесь, выполните следующие действия:

cd -

Вы можете объединить оба этих варианта в одну функцию:

cdpop() {
  local dir=$PWD

  # `cdr` without arguments does the same `cdr 1`: Go back to the previous 
  # dir.
  cdr

  # `-P` does the same as `-p`, but is silent and doesn't ask for 
  # confirmation.
  cdr -P $dir
}

Кстати: Вы можете настроить cdrтакже выполнение cdкоманд. Чтобы включить это, поместите следующее в ваш ~/.zshrcфайл:

zstyle ':chpwd:*' recent-dirs-default true

Тогда любой аргумент, который вы передаете cdr, который не является конкретным для, cdrбудет передан cdвместо этого в. Тогда вам не нужно думать, использовать cdили cdr; вы можете просто всегда использовать cdrдля всего. Смотритеhttp://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Configuration-2для получения дополнительной информации.


Мне не хватает одного пункта popd, который по сути означает: «Я больше не пользуюсь этим каталогом, верните меня туда, где я был раньше, и удалите эту запись из истории».

Небольшая поправка: popdне удаляет каталог изистория, он удаляет его изстек каталогов.

Связанный контент