同时满足使用 wsl 和 vim 以及 tmux 条件的话,应该算是小众中的小众了吧?
vim 和 tmux 有自己的剪贴板,但我仍然希望与系统剪贴板进行交互,毕竟咱可是 wsl。
在 wsl 下获得系统级的剪贴板交互其实很简单,因为 wsl 可以直接运行 .exe 文件,所以直接操作复制和粘贴的 cli interface 程序即可。
shell
复制到系统剪贴板:
cmd | clip.exe
clip.exe < file
当然你也可以在你的 bashrc 里加上这一条 alias copy='_a(){ echo "$1" > temp && clip.exe < temp && rm temp }; _a' 来实现自定义命令。
从系统剪贴板粘贴:
先 clip.exe cli 程序 refer
将其放在定义了环境变量 PATH 的文件夹内,例如 system32,使得 wsl可以全局访问到。
paste.exe | cmd
paste.exe | cmd | clip.exe
paste > file
vim
定义快捷键即可
map ;y : !/mnt/c/Windows/System32/clip.exe<cr>u
map ;p :read !/mnt/c/Windows/System32/paste.exe <cr>i<bs><esc>l
map! ;p <esc>:read !/mnt/c/Windows/System32/paste.exe <cr>i<bs><esc>l
tmux
同样是绑定快捷键
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection
bind p paste-buffer
bind -T copy-mode-vi Y send-keys -X copy-pipe '/mnt/c/Windows/System32/clip.exe'
使用
vim 里 v 框选中要复制的内容 y 是复制到 vim 寄存器内存大家都知道,定义的快捷键 ;y 复制到系统剪贴板。
同理, p 是从寄存器粘贴,;p 是从系统接贴版粘贴。
tmux 里 v 选中 y 复制到内存,Y 复制到系统剪贴板。