Open hanxi opened 2 years ago
neovim可以使用一个二进制的provider来提供复制粘贴的功能,同样tmux也可以通过这个provider来进行复制粘贴,这样就可以通过这个provider来打通所有的粘贴板,可以看一下这个provider,https://github.com/doodleEsc/doodleVim/blob/master/bin/clipboard-provider
neovim可以使用一个二进制的provider来提供复制粘贴的功能,同样tmux也可以通过这个provider来进行复制粘贴,这样就可以通过这个provider来打通所有的粘贴板,可以看一下这个provider,https://github.com/doodleEsc/doodleVim/blob/master/bin/clipboard-provider
看上去很不错,有空我也换上。
OSC 52 是 ANSI escape code 中的 ESC ] (Operating System Command) 中的52, 它提供了访问访问本地剪贴板的能力。
在没有了解到 OSC52 之前,我使用过 lemonade-command/lemonade 来作为远程粘贴板工具,后面自己也折腾了一个 oclip 。其实我想要的效果很简单,在远程 SSH 的终端里的 Vim 里拷贝某段字符串时,能在本地粘贴。当然使用鼠标选中拷贝是可以实现,但是对于键盘党当然是不想这效果的,在 Vim 里从 yy 命令拷贝一行很快为啥还要用鼠标呢。直到遇到 OSC52 ,超级简单的实现了我想要的效果。
原理就不多说了,参考链接里都有说明,感兴趣的可以去看看。
首先需要选用 SSH 终端工具支持 OSC 52 这个功能,我选用的 wezterm 是支持的。然后就是对远程的 neovim 和 tmux 进行配置了。
配置 neovim
我的 neovim 配置: hanxi/nvim-config , 安装插件 ojroques/vim-oscyank ,如果是使用 [packer] 来管理插件的话,使用下面的命令加入插件。
插件的配置我放到
plugins/oscyank.lua
文件了,内容如下:这样配置后的效果就是,在 neovim 里使用 y 命令拷贝字符串的时候,字符串会进到本地系统的粘贴板。这个 issues/24 里也有讨论,说这个解决办法并不是非常完美的,比如在 neovim 里粘贴只能使用
Ctrl + Shift + v
来实现,对我来说这也足够了,至少不用使用鼠标选择复制了。配置 tmux
tmux 配置就更简单了,它是原生就支持 OSC52 的,官方也有详细的文档: tmux配置粘贴板 。
只需要一行配置开启粘贴板就行:
当然,对于 Vim 党来说,设置 Vi 键位来选择和粘贴也是需要的:
我的 dotfiles
如果你想体验一下效果,可以试试我的 dotfiles:
https://github.com/hanxi/dotfiles
在 Ubuntu22.04 系统上只要一行命令就能部署:
参考