Добавить в корзинуПозвонить
Найти в Дзене

zoxide — cd, который запоминает ваши привычки

Ситуация: вы работаете в трёх-четырёх проектах одновременно. Пути к ним выглядят примерно так: /home/user/projects/backend/api/src, /home/user/work/legacy/2024/frontend, /home/user/labs/experiments/rust/cool-tool. Каждый раз вводить полный путь или даже жать Tab несколько раз — утомительно. zoxide — это cd, который запоминает, куда вы ходили, и позволяет переходить по короткому фрагменту имени. Чем чаще вы посещаете папку и чем недавнее это было, тем выше её рейтинг. ➤ Базовое использование: Вместо: cd /home/user/projects/backend/api/src Пишете: z api zoxide сам найдёт папку, содержащую api в имени, и перейдёт туда. # Создать базу данных посещённых папок (достаточно один раз) zoxide init bash # для bash zoxide init zsh # для zsh # Добавить команду в .bashrc/.zshrc eval "$(zoxide init bash)" ➤ Вариант 1 (Переход по части имени): # Если есть папки: # /home/user/projects/old-backend # /home/user/projects/new-backend z new # перейдёт в new-backend (чаще посещалась) z

zoxide — cd, который запоминает ваши привычки

Ситуация: вы работаете в трёх-четырёх проектах одновременно. Пути к ним выглядят примерно так: /home/user/projects/backend/api/src, /home/user/work/legacy/2024/frontend, /home/user/labs/experiments/rust/cool-tool. Каждый раз вводить полный путь или даже жать Tab несколько раз — утомительно.

zoxide — это cd, который запоминает, куда вы ходили, и позволяет переходить по короткому фрагменту имени. Чем чаще вы посещаете папку и чем недавнее это было, тем выше её рейтинг.

➤ Базовое использование:

Вместо:

cd /home/user/projects/backend/api/src

Пишете:

z api

zoxide сам найдёт папку, содержащую api в имени, и перейдёт туда.

# Создать базу данных посещённых папок (достаточно один раз)

zoxide init bash # для bash

zoxide init zsh # для zsh

# Добавить команду в .bashrc/.zshrc

eval "$(zoxide init bash)"

➤ Вариант 1 (Переход по части имени):

# Если есть папки:

# /home/user/projects/old-backend

# /home/user/projects/new-backend

z new # перейдёт в new-backend (чаще посещалась)

z old # перейдёт в old-backend

➤ Вариант 2 (Несколько слов и подстановки):

# Перейти в папку, содержащую "rust" и "lab"

z rust lab

# Подстановка звездочки (любое количество символов)

z *server # найдёт "my_server", "test-server", "server-main"

➤ Вариант 3 (Интерактивный выбор при нескольких совпадениях):

z api

# Если есть api/v1, api/v2, api/v3

# zoxide покажет список, можно выбрать стрелками (требуется fzf)

zi api

Флаг i (interactive) — открывает интерактивный поиск с предпросмотром содержимого папки.

➤ Вариант 4 (Замена `cd` целиком):

Добавьте в .bashrc:

alias cd='z'

Теперь даже если вы по привычке напишете cd, сработает умный переход.

➤ Вариант 5 (Просмотр и редактирование базы данных):

# Показать рейтинг всех папок

zoxide query --list

# Вывести команды для удаления или изменения веса

zoxide edit

➤ Вариант 6 (Игнорирование временных папок и монтирований):

Добавить в .bashrc:

export _ZO_EXCLUDE_DIRS="$HOME/Downloads;$HOME/.cache"

Теперь zoxide не будет запоминать эти папки.

➤ Пример практического использования #1:

Разработчик работает в пяти микросервисах. Ему приходится открытыми пять терминалов, потому что переключаться через cd ../service-1 && cd ../service-2 было муторно. С zoxide он просто пишет z srv-1, z srv-2 из любого места.

➤ Пример практического использования #2:

Путь к папке с конфигами: /etc/nginx/sites-available/my-project/staging/configs. Чтобы попасть туда, нужно каждый раз либо вводить полный путь, либо ходить по Tab-ам. С zoxide: достаточно один раз туда сходить, потом z configs — и готово.

➤ Пример практического использования #3:

В компании переименовали проект с legacy-monolith на new-microservice. Разработчик год привыкает к новому названию. zoxide запомнает оба варианта, но со временем new стал весить больше. Через месяц z leg перестанет находить старую папку — алгоритм автоматически подстроится под новые привычки.

➤ Типичные сложности и их решение:

«`z` не находит мою новую папку». Вам нужно хотя бы один раз в неё перейти (обычным cd или z один раз вручную). zoxide запоминает только посещённые папки.

«`z` путает два похожих названия». Используйте более уникальный фрагмент. Например, вместо z api — z api/v2 или z /v2.

«`z` показывает список, но я хочу выбрать сразу». Поставьте fzf (sudo apt install fzf) и используйте zi вместо z. Откроется интерактивный поиск с предпросмотром.

«Я не хочу, чтобы `z` запоминал монтирования и временные папки». Используйте _ZO_EXCLUDE_DIRS (см. Вариант 6).

Главный совет: потратьте 2 минуты на установку и добавление eval в .bashrc. Ещё один день — чтобы привыкнуть использовать z вместо cd. После этого вы не захотите возвращаться обратно.

Используете zoxide или до сих пор вводите полные пути вручную?

P.S. Если очень хочется, можно сделать alias cd='z' и жить так, будто ничего не изменилось, кроме скорости и удобства.

👉🏻 Я в Telegram - https://dzen.ru/id/686102a27e39653c3429f77f

👉🏻 Я в VK - vk.com/helcode

👉🏻 Я на Boosty - boosty.to/helcode