本文正在参加「金石计划 . 瓜分6万现金大奖」
前言
tmux
作为终端窗口管理工具,着重帮我们解决多窗口协调问题。我们再也不用开多个终端切来切去了。但是tmux
中复制粘贴支持的不是很友好。今天我们介绍两个插件来快速复制粘贴。
复制模式
- 首先
tmux
本身是支持复制粘贴的,可以通过prefix + [
进入复制模式,这个时候我们可以选中复制内容然后通过y
复制。选中的方式有vi
和emacs
两种。 copy-model
将快捷键设置成vi
模式 , 这样我们就可以在copy-model
中使用vi
的快捷键了,hjkl
移动,cdyp
更新删除复制粘贴等等操作了,强 烈建议设置。
setw -g mode-keys vi
- 默认情况下
prefix +y
或者prefix +[
进入复制模式选择内容。然后通过prefix +]
粘贴内容。但是这些复制是仅限在tmux
中通信的。但是我们正常还是喜欢在系统剪切板中复制粘贴内容的。 - 为了能够将
tmux
复制的内容复制到系统剪切板,我们大体上有两种方式,一种是借助外部工具xsel
或者xclip
等工具,然后再.tmux.conf
中配置文件绑定快捷键即可
xsel
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xsel -i --clipboard"
xclip
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
yank 插件
- 上面通过
xsel
或者xclip
进行tmux
复制内容到系统剪切板。当然tmux
也有相应的插件来实现。tmux-yank
就是将tmux
复制到系统剪切板。在linux
系统中存在多种剪切板分别是primary
、secondary
、clipboard
。其中clipboard
就是作为我们系统剪切板。而在tmux-yank
中默认是就是复制到clipboard
系统剪切板。可以通过设置yank_selection
设置
# ~/.tmux.conf
set -g @yank_selection 'clipboard' # or 'secondary' or 'clipboard'
tmux
除了键盘支持外还有鼠标支持。在鼠标中复制粘贴也是可以复制到剪切板的。而在鼠标中默认是primary
。 我们通过可以设置yank_selection_mouse
# ~/.tmux.conf
set -g @yank_selection_mouse 'clipboard' # or 'primary' or 'secondary'
- 完成如上两个设置我们就可以打通
tmux
中复制到系统剪切板了,鼠标和键盘都可以了 - 如果你不想使用
tmux
中的鼠标复制功能。那么你可以关闭
# ~/.tmux.conf
set -g @yank_with_mouse off # or 'on'
tmux-fingers
- 上面我们已经完成了复制粘贴功能。但是在
vim
中有个easymotion
的插件主要方便我们任意跳动。在tmux
中复制也是可以这样任意跳转的,那就是tmux-fingers
set -g @plugin 'Morantron/tmux-fingers'
run-shell ~/.tmux/plugins/tmux-fingers/tmux-fingers.tmux
- 安装好插件之后我们通过
prefix + F
唤醒快速复制。下图就是生成的快捷键 (黄色字母) 。 你想要复制哪块内容直接按黄色快捷键即可。
- 按下之后内容就会复制到
tmux
的粘贴板。如果你完成了上面的yank
插件配置,这个时候的内容同时就会复制到系统剪切板。我们可以直接在其他地方粘贴,如果你想要在tmux
粘贴可以通过prefix +]
。
指令 | 解释 |
---|---|
a-z | 复制选中内容到剪切板 |
CTRL + a-z | 复制选中内容并自动粘贴打开 |
SHIFT + a-z | 复制选中内容并自动粘贴 |
ALT + a-z | 复制选中内容并自动粘贴 |
TAB | 开启多选复制模式 |
SPACE | 切换快捷生成位置(头部,尾部) |
CTRL + c | 退出 |
ESC | 退出 |
? | show help. |
本文正在参加「金石计划 . 瓜分6万现金大奖」