Шпаргалка по zsh

5.9

Основные шорткаты, трюки и привязки клавиш zsh для вашего терминала

Русский: 2026-03-29

zsh — shell по умолчанию на macOS и уверенно набирает популярность на Linux, и не зря: он берёт всё, что делает bash, и добавляет более умное автодополнение, продвинутый globbing и экосистему плагинов, способную превратить ваш терминал в нечто действительно приятное для использования. Если вы пользовались zsh, не зная об этом (спасибо, macOS Catalina), вы ездили на спорткаре на первой передаче.

Настоящая сила zsh — в его строковом редакторе. Те комбинации Ctrl и Alt — не случайные, они пришли из Emacs-стиля редактирования, который используется по умолчанию. Каждый раз, когда вы нажимаете Ctrl-a, чтобы перейти к началу строки, вы используете ту же привязку, которую пользователи Emacs используют с 1970-х. Можно также переключиться на vi mode, если это ваше, но начните со стандартных настроек. Они удивительно хороши, когда вы их усвоите.

Эта шпаргалка фокусируется на том, что сделает вас быстрее прямо сейчас: навигация по строке, чтобы перестать тянуться к стрелкам, трюки с историей, спасающие от повторного набора команд, паттерны globbing, позволяющие zsh искать файлы за вас, и достаточно знаний об oh-my-zsh для настройки продуктивного окружения без утопания в опциях. Мы пропускаем 400-страничное руководство и оставляем то, что окупается ежедневно.

Навигация по строке

Это работает в стандартном Emacs mode (который вы используете, если не переключились явно на vi). Зажгите это в мышечной памяти, и ваши руки никогда не покинут домашний ряд.

Навигация по строке
Ctrl-a
Перейти к началу строки
Ctrl-e
Перейти к концу строки
Alt-f
Переместиться на одно слово вперёд
Alt-b
Переместиться на одно слово назад
Ctrl-f
Переместиться на один символ вперёд
Ctrl-b
Переместиться на один символ назад
Ctrl-w
Удалить слово перед курсором
Alt-d
Удалить слово после курсора
Ctrl-k
Вырезать от курсора до конца строки
Ctrl-u
Вырезать от курсора до начала строки
Ctrl-y
Вставить последний вырезанный текст
Ctrl-t
Поменять местами два символа перед курсором
Ctrl-l
Очистить экран (сохраняя текущую строку)
Ctrl-_
Отменить последнее редактирование

История

Ваша история команд — золотая жила. zsh хранит тысячи команд по умолчанию, и эти шорткаты помогут добывать их эффективно, вместо того чтобы жать стрелку вверх 47 раз.

История
Ctrl-r
Обратный поиск по истории (набирайте для фильтрации)
Ctrl-s
Прямой поиск по истории
Ctrl-p
Предыдущая команда (то же, что стрелка вверх)
Ctrl-n
Следующая команда (то же, что стрелка вниз)
!!
Повторить последнюю команду целиком
sudo !!
Перезапустить последнюю команду с sudo (спасатель жизней)
!$
Вставить последний аргумент предыдущей команды
!^
Вставить первый аргумент предыдущей команды
!*
Вставить все аргументы предыдущей команды
!<string>
Выполнить последнюю команду, начинающуюся с <string>
!<n>
Выполнить команду номер <n> из истории
history
Показать недавнюю историю команд
history -10
Показать последние 10 команд
fc
Открыть последнюю команду в вашем $EDITOR для редактирования

Globbing

Вот где zsh оставляет bash далеко позади. Globbing в zsh настолько мощный, что может заменить find для большинства ежедневных задач поиска файлов. Без pipe, без subshell — просто паттерны.

Globbing
*
Совпадение с любой строкой в текущей директории
**/*
Рекурсивное совпадение с файлами во всех поддиректориях
?
Совпадение с любым одним символом
[abc]
Совпадение с любым из перечисленных символов
[a-z]
Совпадение с любым символом в диапазоне
[^abc]
Совпадение с любым символом НЕ из списка
*.{js,ts}
Совпадение с файлами .js или .ts (brace expansion)
**/*.py
Найти все Python-файлы рекурсивно
*(.)
Совпадение только с обычными файлами (не директориями)
*(/)
Совпадение только с директориями
*(@)
Совпадение только с символическими ссылками
*(m-7)
Файлы, изменённые за последние 7 дней
*(Lk+100)
Файлы больше 100 КБ
*(om[1,5])
5 самых недавно изменённых файлов

Алиасы

Алиасы — способ сделать zsh по-настоящему своим. Вот паттерны, которые стоит знать — конкретные алиасы на ваш выбор, но эти формы дают максимальную продуктивность.

Алиасы
alias ll="ls -lah"
Простой алиас команды
alias -g G="| grep"
Глобальный алиас — работает в любом месте команды (ls G foo)
alias -g L="| less"
Глобальный алиас для перенаправления в less
alias -g NE="2>/dev/null"
Глобальный алиас для подавления ошибок
alias -s py=nvim
Суффиксный алиас — набор file.py открывает его в nvim
alias -s json=jq .
Суффиксный алиас — набор data.json красиво выводит его
alias -s md=glow
Суффиксный алиас — рендерить markdown-файлы в терминале
unalias <name>
Удалить алиас
alias
Показать все активные алиасы
which <command>
Показать, во что разрешается команда или алиас

Привязки клавиш

Строковый редактор zsh (zle) полностью настраиваемый. Можно перепривязать любую клавишу к любому действию, и есть сотни встроенных виджетов на выбор.

Привязки клавиш
bindkey
Показать все текущие привязки клавиш
bindkey -e
Использовать Emacs-привязки (по умолчанию)
bindkey -v
Переключиться на vi-привязки
bindkey "^X^E" edit-command-line
Привязать Ctrl-x Ctrl-e к редактированию текущей строки в $EDITOR
bindkey "^[[A" history-search-backward
Стрелка вверх ищет в истории по текущему вводу
bindkey "^[[B" history-search-forward
Стрелка вниз ищет в истории по текущему вводу
bindkey "\e." insert-last-word
Alt-. вставляет последнее слово предыдущей команды
bindkey -l
Показать доступные keymaps
zle -la
Показать все доступные zle-виджеты

Vi Mode

Если вы пользователь vim/nvim, vi mode сделает zsh как дома. Вы получите normal mode, insert mode и большинство уже знакомых движений.

Vi Mode
bindkey -v
Включить vi mode
Esc
Переключиться в normal mode
i
Войти в insert mode
a
Войти в insert mode после курсора
0
Перейти к началу строки (normal mode)
$
Перейти к концу строки (normal mode)
w / b
Переместиться вперёд / назад на слово (normal mode)
dd
Удалить всю строку
dw
Удалить от курсора до конца слова
ci"
Изменить содержимое внутри кавычек (и другие текстовые объекты)
v
Войти в visual mode для выделения текста
/
Поиск по истории команд (normal mode)

Основы oh-my-zsh

oh-my-zsh — самый популярный фреймворк для zsh, и он это заслужил. Но с 300+ плагинами легко раздуть конфиг. Вот плагины и паттерны, которые действительно стоит загружать.

Установка oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Установить oh-my-zsh
plugins=(git z fzf)
Включить плагины в ~/.zshrc (список через пробел)
ZSH_THEME="robbyrussell"
Установить тему в ~/.zshrc
omz update
Обновить oh-my-zsh до последней версии
omz plugin list
Показать все доступные плагины
omz theme list
Показать все доступные темы
source ~/.zshrc
Перезагрузить конфиг после изменений
Рекомендуемые плагины
git
Добавляет 100+ git-алиасов (gst, gco, gp, gl и т.д.)
z
Переход к часто посещаемым директориям по частичному имени
fzf
Нечёткий поиск файлов, истории и не только через Ctrl-r / Ctrl-t
zsh-autosuggestions
Fish-стиль подсказок на основе вашей истории (призрачный текст)
zsh-syntax-highlighting
Подсвечивает команды по мере набора — красный значит опечатка
sudo
Нажмите Esc дважды, чтобы добавить sudo к текущей или последней команде
copypath
Скопировать путь текущей директории в буфер обмена
web-search
Поиск в Google/GitHub/Stack Overflow прямо из терминала

Советы

Добавьте setopt AUTO_CD в ваш ~/.zshrc, и вы сможете переходить по директориям, просто набирая путь — без cd. Наберите .. чтобы подняться на уровень, ~/projects чтобы перейти домой. Привыкнув, набирать cd ощущается как пустая трата нажатий.

Плагин zsh-autosuggestions — пожалуй, самый большой прирост продуктивности, который можно добавить. Он показывает призрачные подсказки по мере набора на основе истории. Нажмите стрелку вправо, чтобы принять всю подсказку, или Alt-f для принятия только следующего слова. Установите и удивитесь, как жили без этого.

Используйте Ctrl-x Ctrl-e (после привязки через autoload -z edit-command-line && zle -N edit-command-line && bindkey '^X^E' edit-command-line), чтобы открыть текущую командную строку в вашем $EDITOR. Длинные команды с pipe и циклами гораздо удобнее составлять в nvim, чем на одной строке терминала.

Настройте историю правильно. Добавьте это в ~/.zshrc, и вы никогда не потеряете команду: HISTSIZE=50000, SAVEHIST=50000, setopt SHARE_HISTORY (синхронизация между сессиями), setopt HIST_IGNORE_DUPS (пропуск последовательных дубликатов), setopt HIST_IGNORE_SPACE (добавьте пробел в начале, чтобы не записывать в историю — удобно для команд с секретами).

Рекурсивный globbing в zsh (**/*) достаточно мощный, чтобы заменить базовое использование find. Хотите все TypeScript-файлы? ls **/*.ts. Хотите удалить все .DS_Store? rm -f **/.DS_Store. Набирается быстрее и запоминается проще, чем find . -name "*.ts".

Если комбинации с Alt не работают в вашем терминале (часто бывает на macOS), зайдите в настройки терминала и включите «Use Option as Meta key». В iTerm2 это в Profiles > Keys. В Terminal.app — Settings > Profiles > Keyboard. Без этого Alt-f, Alt-b и Alt-d мертвы при рождении.

Суффиксные алиасы — недооценённая фича zsh. Добавьте alias -s py=python3 в ~/.zshrc, и вы сможете запускать Python-скрипт, просто набрав его имя: script.py вместо python3 script.py. Работает для любого расширения — привяжите .json к jq ., .md к вашему просмотрщику markdown, .log к less.

Related Tools