Сделайте команды доступными в истории Zsh сразу после выхода из терминала macOS.

Вопрос или проблема

Zsh 5.9, macOS 14.6.1, Terminal.app. Простой тест:

Откройте Терминал, введите echo test, нажмите на клавишу Return, затем закройте Терминал (то есть нажмите Command-Q, а не Command-W).

Откройте Терминал снова и нажмите клавишу Стрелка Вверх. Вы могли ожидать увидеть echo test, но до тех пор, пока вы не закроете окно Терминала с помощью Command-W, echo test не появится в вашей истории Стрелка Вверх (или Control-R).

Похоже, что iTerm2 не имеет такой проблемы. Могу ли я исправить это, используя сам Zsh? Или мне просто следует использовать iTerm2, если я хочу, чтобы история работала таким образом?

Ответ или решение

Почему команда не сохраняется в истории Zsh сразу после выхода из Терминала на macOS?

На macOS 14.6.1 с использованием Zsh 5.9 существует особенность работы с историей команд, которая может вызывать недоумение у пользователей. При использовании стандартного приложения Terminal.app, если вы выполните команду, например echo test, и затем выйдете из Терминала (нажав Command-Q), команда не сохранится в истории. При повторном открытии Терминала и нажатии клавиши "Arrow Up" вы не увидите echo test в истории. Это происходит потому, что Zsh не записывает историю до тех пор, пока не произойдет закрытие окна терминала (Command-W).

Как справиться с данной проблемой?

1. Включение немедленной записи истории

Чтобы решения были выполнены оптимально, вы можете изменить некоторые настройки Zsh для немедленного сохранения истории.

Откройте файл конфигурации Zsh, например ~/.zshrc, и добавьте следующие строки:

# Включить немедленное сохранение истории
setopt inc_append_history           # Добавляет команды в историю немедленно
setopt share_history                # Делает историю доступной для всех сессий

Эти параметры обеспечивают, что каждая команда будет добавлена в историю в реальном времени, а не только после закрытия терминала.

2. Настройка размера истории

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

HISTSIZE=10000                     # Максимальное количество команд в истории
SAVEHIST=10000                     # Максимальное количество команд для сохранения в файле .zsh_history

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

3. Перезагрузка конфигурации Zsh

После внесения изменений в ~/.zshrc, выполните следующую команду для обновления конфигурации:

source ~/.zshrc

4. Проверка результата

Теперь, после выполнения любой команды и выхода из терминала, как только вы снова его откроете, предыдущие команды должны быть доступны по клавише "Arrow Up".

Альтернатива — использование iTerm2

Если вы ищете альтернативу и лучшее управление историей команд, стоит рассмотреть использование iTerm2. Это приложение предлагает более гибкие и продвинутые функции, которые не ограничиваются только историей команд. Однако, если вы настроите Zsh согласно вышеприведенным рекомендациям, стандартный Terminal.app будет вполне функциональным и удобным.

Заключение

Используя вышеуказанные настройки, вы сможете улучшить работу с историей команд в Zsh на macOS, минимизируя трудности, связанные с восстановлением предыдущих команд после выхода из терминала. Таким образом, вы получите более комфортный и продуктивный процесс работы в Terminal.app.

Оцените материал
Добавить комментарий

Капча загружается...