Mac 终端管理神器 iTerm 也可以很好的多标签页面和分割窗口工作,而 Tmux 最大的好处 是可以离线后可以储存窗口布局和使用状态,在 SSH 环境下尤其有帮助
安装 Mac Centos 使用 Session 1 2 3 4 5 6 7 tmux [new -s session-name] # 创建session,并命名,默认创建一个无名会话 tmux rename-session [-t target-name] new-name # 修改session名字,-t target-name 不是必传,默认当前链接 session tmux (attach, a, at) [-t session-name] # 打开指定session,默认上次访问会话 tmux switch -t <session_name> # 转换到指定session tmux (list-sessions, ls) # 列出所有session tmux detach # 退出当前session tmux kill -session [-t session-name] # 删除指定会话,默认删除上次访问会话
windows 1 2 3 4 tmux new-window # 创建一个新的 window tmux select-window -t (0-9) # 根据索引转到该 window tmux rename-window # 重命名当前 window tmux kill -window [-t window-name] # 删除窗口
Panes 1 2 3 4 5 tmux split-window # 将 window 垂直划分为两个 pane tmux split-window -h # 将 window 水平划分为两个 pane tmux swap-pane -[UDLR] # 在指定的方向交换 pane tmux select-pane -[UDLR] # 在指定的方向选择下一个 pane tmux select-pane -t :.+ # 选择按数字顺序的下一个 pane
其他 1 2 3 4 5 6 7 8 9 10 11 tmux list-keys # 列出所有可以的快捷键和其运行的 tmux 命令 tmux list-commands # 列出所有的 tmux 命令及其参数 tmux info # 流出所有的 session, window, pane, 运行的进程号,等。 tmux source -file ~/.tmux.conf # 重新加载当前的 tmux 配置(基于一个默认的 tmux 配置)
prefix 快捷键 基础操作 1 2 3 4 5 6 7 8 9 10 11 ? 列出所有快捷键;按q返回 d 脱离当前会话,可暂时返回Shell界面,输入tmux attach能够重新进入之前会话 s 选择并切换会话;在同时开启了多个会话时使用 $ 重命名 session D 选择要脱离的会话;在同时开启了多个会话时使用 : 进入命令行模式;此时可输入支持的命令,例如kill -server所有tmux会话 [ 复制模式,光标移动到复制内容位置,空格键开始,方向键选择复制,回车确认,q/Esc退出 ] 进入粘贴模式,粘贴之前复制的内容,按q/Esc退出 ~ 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息 t 显示当前的时间 Ctrl+z 挂起当前会话
窗口操作 1 2 3 4 5 6 7 8 9 10 c # 创建新窗口 & # 关闭当前窗口 [0-9] # 切换窗口 p # 切换至上一窗口 n # 切换至下一窗口 l # 前后窗口间互相切换 w # 通过窗口列表切换窗口 , # 重命名当前窗口,便于识别 . # 修改当前窗口编号,相当于重新排序 f # 在所有窗口中查找关键词,便于窗口多了切换
面板操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 " # 将当前面板上下分屏 % # 将当前面板左右分屏 x # 关闭当前分屏 ! # 将当前面板置于新窗口,即新建一个窗口,其中仅包含当前面板 Ctrl+方向键 # 以1个单元格为单位移动边缘以调整当前面板大小 Alt+方向键 # 以5个单元格为单位移动边缘以调整当前面板大小 空格键 # 可以在默认面板布局中切换,试试就知道了 q # 显示面板编号 o # 选择当前窗口中下一个面板 方向键 # 移动光标选择对应面板 { # 向前置换当前面板 } # 向后置换当前面板 Alt+o # 逆时针旋转当前窗口的面板 Ctrl+o # 顺时针旋转当前窗口的面板 z #tmux 1.8新特性,最大化当前所在面板
配置文件 Tmux 可以在 ~/.tmux.conf
或 /etc/.tmux.conf
中配置快捷键等操作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 # 改变 prefix 快捷键为 <C-a> unbind C-b set -g prefix C-a bind C-a send-prefix# 绑定重新加载 ~/.tmux.conf 的快捷键 bind r source -file ~/.tmux.conf ; display-message "Config reloaded.." set -g default-terminal "screen-256color" # use 256 colors set -g display-time 5000 # status line messages display set -g history -limit 100000 # scrollback buffer n lines set -g base-index 1 # 窗口索引从1开始,默认是0 set -g pane-base-index 1setw -g mode-keys vi # use vi in copy mode # set-option -g default-shell $SHELL # 美化状态栏 set -option -g status onset -option -g status-interval 2set -option -g status-justify "centre" set -option -g status-left-length 60set -option -g status-right-length 90set -option -g status-left "#(~/WebstormProjects/wxnacy.github.io/shells/tmux/plugin/tmux-powerline/powerline.sh left)" set -option -g status-right "#(~/WebstormProjects/wxnacy.github.io/shells/tmux/plugin/tmux-powerline/powerline.sh right)" set -window-option -g window-status-current-format "#[fg=colour235, bg=colour27]⮀#[fg=colour255, bg=colour27] #I ⮁ #W #[fg=colour27, bg=colour235]⮀" # 分割窗口 unbind '"' bind - splitw -v # 垂直分割 unbind % bind | splitw -h # 水平分割 # 选择面板,更符合 Vim 习惯 bind k selectp -Ubind j selectp -Dbind h selectp -Lbind l selectp -R# 使用 X 关闭 window unbind & bind X killw
参考文献