一直以来个人开发环境中linux下tmux和系统剪切板的共享功能都是通过xclip机制实现的,废话不多说直接贴在用的tmux配置文件吧:
# 显示vi-cope模式下的映射 tmux list-keys -t vi-copy
# 由于vim中C-b是上翻键的原始映射,为避免对vim产生影响,这里将tmux的快捷键前导修改为C-y
# unbind-key C-b
# set -g prefix C-y
# 设置开启光标事件功能, 配合vim-tmux-focus-events插件可以实现自动触发vim的FocusGained自动命令
# 注意:该配置会导致vim内部启动的terminal在切换tmux的Tab窗口时收到<Esc>[O, 需要在vim添加映射来处理这种情况
set -g focus-events on
set -g escape-time 0 # escape-time=0提高了esc键在vim中的反应速度,非常重要的配置
set -g mode-keys vi # tmux的复制模式使用vi模式以实现复制模式下操作和vim类似
set -g status-keys emacs # 状态栏使用emacs风格的按键映射
set -g status-interval 30 # 状态栏每30秒刷新一次
set -g display-time 1000 # 设置状态提示信息显示时间为1s
set -g wrap-search off # 关闭历史搜索时的自动循环搜索
set -g base-index 1 # index从1开始
set -g pane-base-index 1 # pane的索引从1开始
set -g renumber-windows on # 可以自动调节窗口index
set -g automatic-rename on # 远程终端的标题加入当前运行的程序名,vimdesktop需要用这个标题来切换快捷映射
set -g set-titles on # 设置窗口标题格式, 该格式需要被vimd使用
set -g set-titles-string '#W-#S' # 窗口格式设置为"程序名后总是追加'-tmux'
set -g allow-rename off # 是否允许使用printf \033kxxx\033\\ 名来来重命名当前窗口标题(#W)
set -g history-limit 81920 # 设置历史缓冲大小, 大一点会方便历史搜索
set -g default-terminal "xterm-256color" # 设置终端颜色为256色
set -ga terminal-overrides ",*256col*:Tc" # 设置tmux支持24bit的真彩色
set -g aggressive-resize on # 允许重设置窗口大小
set -g mouse on # 使能tmux的鼠标模式, 配合下面的自定义的按键配置基本可以实现复制模式无障碍自动切换
# 优化鼠标操作, 主要是为了支持自动复制到全局剪切板, 注意:\;前后的空格都不能省略, 否则会导致配置无效
# 复制模式下实现类似vim的'v'进入选择模式
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi B send-keys -X rectang