Anc
(Anc)
1
同时满足使用 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
复制到系统剪贴板。
说实话,有点儿没看懂。。。
我本人也用 wsl,而且现在 docker windows 直接集成到了 wsl 上,在 windows 上开发更方便了。我是用的 Terminus 做为客户端,剪贴板管理用的是 Ditto,复制粘贴没遇到什么问题。
哦对了,使用 vscode,搭配 remote wsl 和 remote container 的插件,我在终端上用 vim 都越来越少了,能用 IDE 谁用 vim 啊
Anc
(Anc)
3
目标是全键盘,这套方案适用于Windows下任何Terminal,当然很小众就是了。
使用场景,例如 vim 编辑某个文件,要搜索其中一些内容,只要 v ;y 就可以直接复制到系统剪贴板,然后浏览器里直接粘贴搜索;
或者直接cat某个文件内容到剪贴板内;
又例如当开着tmux时,用鼠标框选复制往往是存在乱码或者换行的问题的,用绑定的快捷键就不会。
我也是 IDE 和 vim 一起用,IDE 开发项目 vim 快速修改。
IDE + vim 并不好用,快捷键占用太多反而顾此失彼。
IDE + remote SSH 或者 remote Build/Deployment 也不喜欢,更喜欢保持一致的。
Anc
(Anc)
4
说实话,我写的一些东西由于太小众了(而且只是捞我自己一整套体系里面的一部分),所以我也并没有想要一步一步说清楚先如何 再如何 应该如何 如何更好,毕竟很多东西是见仁见智的,你用你的全键盘、我用我的全鼠标手势,你右手鼠标左手键盘、我偏爱左手鼠标右手打字。
发出来不是想要教大家怎么做,而是给想要折腾这方面的人看到,更多是提供一种思路。