同时满足使用 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
复制到系统剪贴板。