Для начала конфиг с комментариями:
Код: Выделить всё
# prefix - по умолчанию комбинация ctrl-b.
# Поддержка мышки
setw -g mouse on
# Переназначаем prefix
set -g prefix C-a
unbind C-b
# Отправка Ctrl - a в другое приложение (в случае совпадения комбинации)
bind C-a send-prefix
# Задержка между нажатием prefix и командой.
set -sg escape-time 1
# Индекс окон и панелей начинаются с 1.
set -g base-index 1
setw -g pane-base-index 1
# Перечитать tmux.conf
bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!"
# Более интуитивное создание панелей
bind | split-window -h
bind - split-window -v
# Разделить окно и сохранить текущий каталог
bind _ split-window -v -c "#{pane_current_path}"
bind / split-window -h -c "#{pane_current_path}"
# Перемещение по панелям в Vi - подобном стиле
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Перемещение между окнами ( ключ -r позволяет повторно нажимать C-h, без нажатия prefix)
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
# Меняем размер панелей в Vi - подобном стиле
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# Терминал по-умолчанию для tmux
set -g default-terminal "screen-256color"
### Настройка цветов для tmux
# Цвета строки состояния
set -g status-style fg=white,blink,bg=black
# Цвета для обозначения окон в строке состояния
setw -g window-status-style fg=cyan,bg=black
setw -g window-status-current-style fg=white,bold,bg=red
## Цвета границ панелей
setw -g pane-border-style fg=green,bg=black
# setw -g pane-active-border-style fg=white,bg=yellow
# Выделяем активную панель с помощью затемнения
setw -g window-style fg=colour238,bg=colour235
setw -g window-active-style fg=white,bg=black
# Стиль сообщения строки состояния
set -g message-style fg=white,bold,bg=black
## Что показывать в строке состояния
set -g status-left-length 40
set -g status-left "#[fq=green]Session: #S #[fg=yellow]#I \
#[fg=cyan]#P"
set -g status-right "#[fg=cyan]%d %b %R"
set -g status-interval 60
set -g status-justify centre
# Если что-то произошло в не активном окне обозначить это цветом.
setw -g monitor-activity on
set -g visual-activity on
# Перемещение в copy-mode (prefix + [) в Vi - подобном стиле
setw -g mode-keys vi
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection
# Сохранять в буфер системы, а не tmux'a
bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"
# Можно переназначить на prefix + v
# bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
# Вставить из буфера системы в tmux
bind C-v run "tmux set buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
# Включаем/отключаем synchronize-panes.
# Позволяем выполнить одну команду на всех открытых панелях.
bind C-s set-window-option synchronize-panes \; display "Toggled synchronize"
# Разворачиваем текущую панель на весь экран.
unbind Up
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
# Вывод журнала в текстовый файл.
bind P pipe-pane -o "exec cat >> ~/#W.log" \; display "Toggled logging to ~/#W.log"
# Загружаем конфиг для конкретной ОС
if-shell "uname | grep -q Darwin" "source-file ~/.tmux.mac.conf"
# Загрузить настройки из файла, если есть.
if-shell "[ -f ~/.tmux.private ]" "source ~/.tmux.private"
# Менеджер плагинов
set -g @plugin 'tmux-plugins/tpm'
# Позволяет сохранять/загружать окружение tmux после перезагрузки.
set -g @plugin 'tmux-plugins/tmux-ressurect'
run '~/.tmux/plugins/tpm/tpm'
И о существовании tmuxinator, который позволяет создавать конфигурации tmux, в виде .yml файла.
Код: Выделить всё
name: example
root: ~/
windows:
- console:
layout: main-vertical
panes:
- top
- #empty, will just run plain bash
- editor: vim
Код: Выделить всё
tmux has-session -t example
if [ $? != 0 ]
then
tmux new-session -s example -n editor -d
tmux send-keys -t example 'cd ~/dev_tmux' C-m
tmux send-keys -t example 'vim' C-m
tmux split-window -v -t example
tmux select-layout -t example main-horizontal
tmux send-keys -t example:1.2 'cd ~/dev_tmux' C-m
tmux new-window -n console -t example
tmux send-keys -t example:2 'cd ~/dev_tmux' C-m
tmux select-window -t example:1
tmux attach -t example
fi
tmux attach -t development
Используя tmux -f,конфиг выше можно сократить, создав файл example.conf
Код: Выделить всё
source-file ~/.config/tmux/tmux.conf
new-session -s example -n editor -d
send-keys -t example 'cd ~/dev_tmux' C-m
send-keys -t example 'vim' C-m
split-window -v -t example
select-layout -t example main-horizontal
send-keys -t example:1.2 'cd ~/dev_tmux' C-m
new-window -n console -t example
send-keys -t example:2 'cd ~/dev_tmux' C-m
select-window -t example:1
attach -t example