Tmux 是什么? tmux 是一个优秀的终端复用器类自由软件,功能类似 GNU Screen,但使用 BSD 许可发布。用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个任务时非常方便。 tmux 采用 client/server 模型,主要由以下模块组成: 模块 简介 server 服务。tmux 运行的基础服务,以下模块均依赖此服务。 session 会话。一个服务可以包含多个会话。 window 窗口。一个会话可以包含多个窗口。 panel 面板。一个窗口可以包含多个面板。 执行 tmux 命令时就开启了一个服务并创建了一个会话,窗口和面板。 特点 一个虚拟终端可以管理多个会话,窗口和面板 支持分屏,同时处理多个操作 窗口、面板可以在会话间自由移动,切换 丰富灵活的状态行展示 支持自定义快捷键,依照个人习惯配置令操作更高效 不受断网影响,避免丢失重要工作进度 结对编程,方便演示与协作 自带复制粘贴缓冲区管理 脚本化配置,可配置多种操作环境 以上内容都来自于 - Wikipedia 接下来谈谈Tmux的具体使用 安装 brew install tmux # OSX pacman -S tmux # archlinux apt-get install tmux # Ubuntu yum install tmux # Centos 使用 默认的快捷键:<Ctrl+B> 配置文件:~/.tmux.conf 因为Tmux是一个维持终端会话的工具,要执行Tmux的快捷键时需要先按<prefix>,这类似Vim的Leader。 默认快捷键 :new<CR> # 创建新的 Session,其中 : 是进入 Tmux 命令行的快捷键 s # 列出所有 Session,可通过 j, k, 回车切换 $ # 为当前 Session 命名 c # 创建 Window <n> # 切换到第 n 个 Window , # 为当前 Window 命名 % # 垂直切分 Pane " # 水平切分 Pane <space> # 切换 Pane 布局 d # detach,退出 Tmux Session,回到父级 Shell t # 显示一个时钟,:) ? # 快捷键帮助列表 使用Vim快捷键 # 复制模式中的默认键盘布局使用vi set-window-option -g mode-keys vi # 使用vi 键盘布局移动光标 bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R 当配置使用Vi模式时,键入<prefix> 后: 使用hjkl 移动光标 使用空格选中需要被复制的内容 使用y复制内容 使用q退出复制模式 面板控制 窗口大小 # 向左扩展 bind -r H resize-pane -L 10 # 向右扩展 bind -r L resize-pane -R 10 # 向上扩展 bind -r K resize-pane -U 5 # 向下扩展 bind -r J resize-pane -D 5 窗口分屏 # 使用|竖屏,方便分屏(默认为%) bind | split-window -h -c "#{pane_current_path}" # 使用-横屏,方便分屏(默认为") bind - split-window -v -c "#{pane_current_path}" 使用系统剪切板 Vim、Tmux、系统共用剪切板 插件 tmux-plugins/tpm : Tmux的插件管理,与Vim的Vundle类似 tmux-plugins/tmux-sensible 和 tmux-plugins/tmux-resurrect:会话的保存与恢复 tmux-plugins/tmux-cpu: 系统CPU的使用情况 tmux-plugins/tmux-battery: 系统电量的使用情况 tmux-plugins/tmux-prefix-highlight: 高亮<prefix>的键入 具体插件使用在Github搜索插件名称吧 献上我的配置 #-------------------------------------------------------------------------- # 插件设置 set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' set -g @plugin 'tmux-plugins/tmux-cpu' set -g @plugin 'tmux-plugins/tmux-battery' set -g @plugin 'tmux-plugins/tmux-prefix-highlight' set -g @plugin 'tmux-plugins/tmux-resurrect' #-------------------------------------------------------------------------- # 说明 # bind-key == bind # unbind-key == unbind # bind -r 可以重复执行 # bind -n 绑定到全局,不需要按prefix #-------------------------------------------------------------------------- # 按键绑定 # 复制模式中的默认键盘布局使用vi set-window-option -g mode-keys vi # 使用vi 键盘布局移动光标 bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R # 向左扩展 bind -r H resize-pane -L 10 # 向右扩展 bind -r L resize-pane -R 10 # 向上扩展 bind -r K resize-pane -U 5 # 向下扩展 bind -r J resize-pane -D 5 # 上一个窗口 bind-key ` last-window # 使用esc进入复制模式 bind Escape copy-mode bind -T copy-mode-vi 'v' send -X begin-selection # 系统剪切板 # https://robots.thoughtbot.com/how-to-copy-and-paste-with-tmux-on-mac-os-x # MacOS: brew install reattach-to-user-namespace bind -T copy-mode-vi 'y' send -X copy-pipe-and-cancel 'reattach-to-user-namespace pbcopy' unbind p bind p pasteb # key bindings for horizontal and vertical panes # 使用|竖屏,方便分屏 #unbind % bind | split-window -h -c "#{pane_current_path}" # 使用-横屏,方便分屏 # unbind '"' bind - split-window -v -c "#{pane_current_path}" # 使用prefix + r 重新加载配置文件 bind r source-file ~/.tmux.conf \; display "Reloaded!" #-------------------------------------------------------------------------- # 基本功能性设置 # 禁用自动重命名 set -wg allow-rename off set -wg automatic-rename off # 开启鼠标的支持 set -g mouse on # 使用zsh环境 set-option -g default-shell /bin/zsh # 显色样式 set -g default-terminal "xterm-256color" set-option -ga terminal-overrides ",xterm-256color:Tc" # 自定义的主题 # Powerline Gray - Tmux Theme # Created by Jim Myhrberg <[email protected]>. # # Inspired by vim-powerline: https://github.com/Lokaltog/powerline # # Requires terminal to be using a powerline compatible font, find one here: # https://github.com/Lokaltog/powerline-fonts # # Status update interval set -g status-interval 1 # Basic status bar colors set -g status-fg colour238 set -g status-bg colour233 # Left side of status bar set -g status-left-bg colour233 set -g status-left-fg colour243 set -g status-left-length 100 set -g status-left "#[fg=colour232,bg=colour245,bold] #S #[fg=colour245,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #I:#P #[fg=colour235,bg=colour233,nobold] | #{prefix_highlight} " # Right side of status bar set -g status-right-bg colour233 set -g status-right-fg colour243 set -g status-right-length 300 set -g status-right "#{cpu_percentage} / #{battery_percentage} #[fg=#1f1f1f,bg=#121212]#[fg=#989898,bg=#1f1f1f] LookAtYourself #[fg=colour235,bg=#1f1f1f]#[fg=colour240,bg=colour235] %H:%M:%S #[fg=colour240,bg=colour235]#[fg=colour233,bg=colour240] %m/%d #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] #H " # Window status set -g window-status-format " #I:#W#F " set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour250,nobold] #I:#W#F #[fg=colour233,bg=black,nobold]" # Current window status set -g window-status-current-bg black set -g window-status-current-fg colour250 # Window with activity status set -g window-status-activity-bg colour243 # fg and bg are flipped here due to set -g window-status-activity-fg colour233 # a bug in tmux # Window separator set -g window-status-separator "" # Window status alignment set -g status-justify centre set -g status-position bottom # Pane border set -g pane-border-bg default set -g pane-border-fg colour235 # Active pane border set -g pane-active-border-bg default set -g pane-active-border-fg colour240 # Pane number indicator set -g display-panes-colour colour233 set -g display-panes-active-colour colour245 # Clock mode set -g clock-mode-colour colour240 set -g clock-mode-style 24 # Message set -g message-bg colour245 set -g message-fg colour232 # Command message set -g message-command-bg colour233 set -g message-command-fg colour250 # Mode set -g mode-bg colour243 set -g mode-fg colour232 # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) run '~/.tmux/plugins/tpm/tpm' ```tmux-screenshots.png