我的tmux

tmux有三个基本概念:会话(Session),窗口(Window)和面板(Pane). 当你输入tmux后, tmux实际做的事是首先创建一个会话(Session), 然后在这个会话中创建一个窗口, 你可以继续创建多个窗口(Window), 每个窗口初始只包含一个面板, 继续分屏后, 会出现多个面板(Pane) 你在其中看到的终端实际上都属于tmux的某个面板

更进一步讲, Session可以包含多个Window, 每个Window又可以包含多个Pane
mac安装 brew install tmux

常见命令

  • 启动新会话:tmux new-session
  • 列出所有会话:tmux list-sessions
  • 切换到另一个会话:tmux attach-t <session-number>
  • 关闭当前会话:tmux kill-session
  • C-b c 创建一个新窗口
  • C-b & 关闭当前窗口
  • C-b w 列出所有的窗口选择
  • C-b v 垂直分裂窗口
  • C-b s 水平分裂窗口
  • Control+d 关闭窗口
  • Shift+方向,在不同窗口切换

附带配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 0 is too far from ` ;)
set -g base-index 1

# Automatically set window title
set-window-option -g automatic-rename on
set-option -g set-titles on

# set -g default-terminal screen-256color
set -g status-keys vi
set -g history-limit 10000

setw -g mode-keys vi
setw -g monitor-activity on
# setw -g mouse on

# for version 2.0 before, use left
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
setw -g mode-mouse on
set-option -s set-clipboard on

set -s escape-time 50

bind c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind s run-shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind v run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
#
# Shift arrow to switch windows
bind -n S-Left select-pane -L
bind -n S-Right select-pane -R
bind -n S-Up select-pane -U
bind -n S-Down select-pane -D

# Reload tmux config
bind r source-file ~/.tmux.conf

set -g default-terminal "screen-256color"
#set -g default-terminal "xterm-256color"

# THEME
#set -g status off
set -g status-bg colour234
set -g status-fg white
# set -g mode-style bg=white,fg=black
set -g status-interval 60
set -g status-left-length 30
set -g status-left '#[fg=green](#S) #(whoami)'
set -g status-right-length 60
set -g status-right '#[fg=yellow]#(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=white]%Y-%m-%d %H:%M:%S #[fg=green]%s#[default]'

常用命令

在zshrc 配置如下命令,可以使得每次登录都恢复到上次的的会话

1
2
3
[ -z "$TMUX"  ] && ! [ -z "$SSH_TTY" ] && { tmux attach || exec tmux new-session && exit;}
PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'
export BAT_THEME="Visual Studio Dark+"