You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# 复制模式中的键盘布局
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
set -s set-clipboard on
bind-key -T copy-mode-vi y send -X copy-selection-and-cancel
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 系统上只要一行命令就能部署:
参考
The text was updated successfully, but these errors were encountered: