tmux快捷键配置

写在前面

为什么需要配置文件:

  • tmux 默认快捷键不方便
  • tmux 默认视图不美观

参考:

tmux: Productive Mouse-Free Development

.tmux.conf 文件

配置文件查找顺序

  1. /etc/tmux.conf
  2. ~/.tmux.conf

配置文件命令说明:

  • set: set-option 别名
  • setw: set-window-option 别名

更方便的前缀键

set -g prefix C-a  # -g全局配置(global)

修改默认延时

向 tmux 发送命令时,tmux 默认存在延时(prefi 键与命令键之间的时间)

延时设置为 1ms 让 tmux 响应更快

set -sg escape-time 1

设置窗口和面板索引

窗口索引从 1 开始(默认为 0)

set -g base-index 1

面板索引从 1 开始(默认为 0)

set -g pane-base-index 1

tmux 配置文件的实时更新

prefix :  # 进入命令模式
source-file ~/.tmux.conf

创建重新加载配置的快捷键

重新加载配置文件后, tmux 并不会提示配置是否改变,使用display命令在状态栏输出
消息。
多个命令之间添加\;

bind r source-file ~/.tmux.conf \; display "Reloaded!"

如何定义一个不需要前缀的快捷键?

bind-key -n C-r source-file ~/.tmux.conf  # 使用Ctrl + r 键重新加载配置文件

影响: tmux 会话中的任何程序或命令都禁用组合键。

发送前缀键到其它程序

bind C-a send-prefix

目的: 避免命令前缀对其它程序的影响, 两次前缀键发送给 tmux 中的程序。

分割面板

# 使用|水平分割
bind | split-window -h

# 使用-垂直分割
bind - split-window -v

重新映射移动键

参照 vim 移动键位设置

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

窗口循环切换

使用快捷键 Ctrl hCtrl l 实现

# 上一个窗口
bind-key -n C-h select-window -t :-
# 下一个窗口
bind-key -n C-l select-window -t :+

调整面板大小

# 每次改变需要前缀键加持
bind H resize-pane -L 5
bind J resize-pane -D 5
bind K resize-pane -U 5
bind L resize-pane -R 5

# 一次前缀键, 持续更改(默认最大重复限制时间: 500毫秒, 通过repeat-time设置)
bind -r H resize-pane -L 5  # r=repeatable
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

处理鼠标

鼠标模式开关

setw -g mode-mouse on/off

其它鼠标操作

set -g mouse-select-pane on/off  # 鼠标选择一个面板
set -g mouse-resize-pane on/off  # 调整面板大小
set -g mouse-select-window on/off  # 窗口列表中选择一个窗口

配置文件

set -g prefix C-a

bind-key C-a send-prefix

set -g default-shell "/usr/bin/fish"

set -sg escape-time 1

bind-key -n C-r source-file "~/.tmux.conf" \; display "Reloaded!"

bind | split-window -h

bind - split-window -v

bind h select-pane -L

bind j select-pane -D

bind k select-pane -U

bind l select-pane -R

bind-key -n C-h select-window -t :-

bind-key -n C-l select-window -t :+

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

comment: