Терминал либо экономит часы в неделю, либо превращается в коллекцию скриншотов с reddit. Ниже — связка, которая у меня живёт на macOS и Linux-серверах с минимальным расхождением ⚙️
Цель: три навыка, не триста плагинов #
- Не терять работу при обрыве SSH → tmux.
- Быстро находить файлы, историю, процессы → fzf + rg.
- Воспроизводимый setup на новой машине → dotfiles в git.
Всё остальное — по необходимости.
tmux: сессии, которые переживают VPN #
Установка:
# macOS
brew install tmux
# Debian/Ubuntu
sudo apt install tmuxМинимальный ~/.tmux.conf:
# префикс Ctrl-a (как screen) — меньше конфликтов с Ctrl-b в Emacs/readline
unbind C-b
set -g prefix C-a
bind C-a send-prefix
set -g mouse on
set -g base-index 1
setw -g pane-base-index 1
set -g history-limit 50000
set -g default-terminal "tmux-256color"
# удобные сплиты
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"Базовые движения (после префикса):
| Клавиши | Действие |
|---|---|
c | новое окно |
n / p | следующее / предыдущее окно |
% / " | сплит (или ` |
d | detach (сессия жива) |
s | список сессий |
tmux new -s work
tmux attach -t work
tmux lsНа сервере: всегда tmux new -A -s main в .bash_profile для интерактивных SSH — вернулись после обрыва, работа на месте.
zsh: быстрый, но не «Oh My Zsh на 2 секунды старта» #
brew install zsh
# или apt install zsh
chsh -s "$(which zsh)"Я сознательно не тяну полный Oh My Zsh на серверах. На ноутбуке — ок, если старт < 100 ms. Иначе: zsh-autosuggestions + zsh-syntax-highlighting точечно.
Полезное в .zshrc:
export EDITOR=nvim
export HISTSIZE=50000
export SAVEHIST=50000
setopt SHARE_HISTORY HIST_IGNORE_DUPS
# качественный PATH
export PATH="$HOME/.local/bin:/opt/homebrew/bin:$PATH"
# docker compose v2
alias dc='docker compose'
alias dps='docker compose ps'
alias g='git'
alias gs='git status -sb'Поиск: fzf + ripgrep + bat + fd #
brew install fzf ripgrep bat fd eza
# Debian: apt install fzf ripgrep bat fd-findИнтеграция fzf:
# macOS homebrew
source <(fzf --zsh)Привычки:
# найти файл
fd 'compose.ya?ml' ~/temp/git.evgn.ru
# искать по содержимому
rg -n 'AllowUsers' /etc
# красивый cat
bat /etc/ssh/sshd_config
# интерактивный выбор из истории / git
# Ctrl-R после source fzfeza вместо ls (опционально):
alias ll='eza -lah --git'Dotfiles: один репозиторий, без копипасты #
Схема, которая масштабируется:
dotfiles/
.zshrc
.tmux.conf
.config/git/config
install.sh # ln -sf в $HOME# идея install.sh
ln -sf "$PWD/.zshrc" "$HOME/.zshrc"
ln -sf "$PWD/.tmux.conf" "$HOME/.tmux.conf"Секреты не в dotfiles: только include на ~/.config/git/config.local или env из rbw.
Для серверов — тонкий профиль: tmux + vim/nvim + alias, без GUI-шрифтов и Starship, если не нужен.
Чего избегать #
- 40 плагинов tmux «как у того чувака с YouTube» — вы не запомните бинды.
alias rm='rm -i'на проде в скриптах — сюрпризы в CI.- Синхронизация dotfiles через iCloud/Dropbox — merge-конфликты в
.zsh_historyбольнее, чем кажется.
Итог #
Соберите tmux + zsh + fzf/rg за один вечер, положите в git, на следующей машине разверните за 5 минут. Красота prompt’а — после того, как Ctrl-R и tmux attach уже мышечная память 🚀