tmux 犹如 screen,用来在控制台里打开多个窗口,以达到减少打开控制台的数目和快速切换的目的。算是一个效率工具。
tmux 有很多快捷键,这些快捷键用来完成不同的操作,如能灵活运用,可以达到提高效率的目的。
Session Manager
tmux里面的Session就像是一个工作台,每次打开tmux,其实就是打开一个 Session 。我们可以根据不同的使用场景来定义不同的 Session。例如我专门建立了一个叫做 blog 的 Session。用来做 blog 相关的工作(设置环境变量,打开文章,编译,上传等)。我主要用到如下命令来管理Session。
tmux new -s session_name
创建一个 Session 名字叫做 session_name
tmux list-sessions (tmux ls)
列出当前有什么 Session 在后台
tmux attach -t session_name (tmux a -t session_name)
打开一个已经创建的叫做 session_name 的 Session。
tmux switch -t session_name
切换到session_name
tmux detach (c-b d)
临时退出 Session。也就是退出了 tmux
Windows
我们可以在 Session里面建立标签,也即是 Windows。每个 window 也有自己的名字。例如我在 blog 这个 Session 里面建立了两个 window 一个叫 serve 用来运行本地服务器,另一个叫 compile 用来编译 blog。我可以很方便的在两个 window 之间切换。其中相关的命令如下。
tmux new-window (c-b c)
创建一个新的 window
tmux select-window -t :0-9 (c-b 0-9)
每一个 window 都有一个索引,我们可以通过索引来切换window
tmux rename-window (c-b ,)
重命名 window。
Panes
除了可以创建 window,同时可以在每个 window 里面分割出不同的窗口,每个窗口就是 pane。相关操作如下
c-b %
分裂垂直窗口
c-b "
分裂水平窗口
c-b 方向键
切换pane
c-b { or c-b }
移动 pane
c-b x
删除 pane
c-b z
全屏该 pane
copy and paste
c-b [
进入复制模式
使用 vi 模式或者 emacs 模式移动光标,具体需要配置。
space
enter
按 空格 开始选中内容, enter确定并退出
c-b ]
粘贴
my configuration
setw -g mode-keys vi
bind s split-window -h
bind v split-window -v
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind < resize-pane -L 10
bind > resize-pane -R 10
bind - resize-pane -D 10
bind + resize-pane -U 10
bind : command-prompt
set-option -g default-command "reattach-to-user-namespace -l zsh"