tmux使用

  1. 1. 基本使用
  2. 2. 基本配置
  3. 3. 窗格切换
  4. 4. 拷贝
  5. 5. 鼠标切换窗格
  6. 6. 快捷键

基本使用

<prefix>$可以重命名当前Session
<prefix>c可以创建新的窗口(Window)
<prefix>%水平分割窗口(形成两个Pane)
<prefix>"垂直分割窗口。退出当前Session的快捷键是<prefix>d

在Bash中可以查看当前的tmux服务中有哪些Session:tmux ls
根据Session的名字可以再回去:tmux a -t myname (or at, or attach)

基本配置

默认的<prefix>Ctrl+b,如果觉得不好按可以调整为Ctrl+a,只需要在配置文件~/.tmux.conf中加入:

1
2
unbind ^b
set -g prefix 'C-a'

为了能让Tmux动态载入配置而不是重启,我们设一个快捷键r来重新载入配置:

1
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"

当前tmux的设置,可通过tmux show -g

窗格切换

可以把hjkl设置为切换窗格的快捷键:

1
2
3
4
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

再给调整窗格大小设置快捷键:

1
2
3
4
bind L resize-pane -L 10 # 向左扩展
bind R resize-pane -R 10 # 向右扩展
bind K resize-pane -U 5 # 向上扩展
bind J resize-pane -D 5 # 向下扩展

我们发现当打开新窗格时Shell仍然在Home目录,可以设置为当前目录:

1
2
bind '"' split-window -c '#{pane_current_path}'
bind '%' split-window -h -c '#{pane_current_path}'

拷贝

在Tmux中通过[进入拷贝模式,按下<space>开始拷贝。然后用Vim/Emacs快捷键选择文本,按下拷贝所选内容。然后通过]进行粘贴

上述所有快捷键中,只有[和]需要先按下<prefix>
我们可以让上述拷贝快捷键符合Vi风格:

1
2
3
4
5
6
bind Escape copy-mode
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
unbind p
bind p pasteb
setw -g mode-keys vi # Vi风格选择文本

这样,按下<Escape>进入拷贝模式,v进行选择,y拷贝所选内容,p进行粘贴。

鼠标切换窗格

Tmux和Vim风格非常像,也可以设置鼠标模式。下面的设置开启了所有鼠标功能: 通过点击选择窗格,通过拖动更改窗格大小,通过鼠标选择窗口,还可以通过鼠标选择复制区域。

1
2
3
4
setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

快捷键

Sessions

1
2
3
:new<CR> new session
s list sessions
$ name session

:new -s 可以指定新Session的名字。

Windows (tabs)

1
2
3
4
5
6
7
c create window
w list windows
n next window
p previous window
f find window
, name window
& kill window

Panes (splits)

1
2
3
4
5
6
7
8
9
10
11
12
13
% vertical split
" horizontal split
o swap panes
q show pane numbers
x kill pane
+ break pane into window (e.g. to select text by mouse to copy)
- restore pane from window
⍽ space - toggle between layouts
<prefix> q (Show pane numbers, when the numbers show up type the key to goto that pane)
<prefix> { (Move the current pane left)
<prefix> } (Move the current pane right)
<prefix> z toggle pane zoom

Misc

1
2
3
4
d detach
t big clock
? list shortcuts
: prompt