如果我使用 Vim 复制到 X11(复制)剪贴板"+y
,则只要 Vim 打开,我就只能粘贴内容。原因如下:
出现此问题的原因是 Xorg 采用保守的复制方法。当用户执行选择或复制时,它仅复制对原始数据的引用。在用户请求粘贴之前,它不会从源程序中检索实际数据。这样可以节省大量不必要的数据传输,但代价是无法从未将剪贴板保存在其他地方的已关闭程序中检索数据。
即退出 Vim 后,X11 无法再从中检索数据,因为引用无效。
如何克服 X11 的这种“限制”,在 Vim 退出后粘贴 X11(复制)剪贴板,例如使用剪贴板管理器?
最终,我想要的是类似于以下的行为:
Freedesktop 的 ClipboardManager 规范可以解决这个问题。 Gnome 设置守护进程是 Ubuntu 的默认处理所有复制和粘贴的组件,它允许应用程序明确请求将其剪贴板内容保存在安全的地方。应用程序通过在退出前请求保存来符合要求。退出前一切都已解决,我们不会丢失任何数据。
clipmenu
被推荐,但它不作为 Debian 软件包提供。此外,在退出时没有使用或autocutsel
保留剪贴板。autocutsel -selection PRIMARY -fork
autocutsel -selection CLIPBOARD -fork
答案1
那一页你引用的日期是2010年。
我正在使用 vim 8.1 并且它工作正常。
您确定您使用的是安装了 gui 的 vim 版本吗?使用:version
显示启用的功能。+clipboard
应该显示。
我安装是vim-gtk3
为了测试这个(vim-tiny 没有启用剪贴板功能,并显示为-clipboard
.
我正在使用 ubuntu 20.04.02
--- 编辑 -- 回复评论
刚刚仔细检查过
vim.gtk3 - 有效
vim.tiny - 失败
我使用以下序列猛拉一行:“+yy
我使用以下顺序粘贴:“+p
:版本 VIM - Vi IMproved 8.1(2018年5月18日,2021年9月20日11:42:42编译) 包含的补丁:1-2269 修改者[电子邮件受保护] 编译者[电子邮件受保护]
[第二次编辑] 进一步澄清最初两次测试和随后的第三次测试。
最初我尝试了 2 个测试
测试 1 在航站楼 1 中
- 运行vim
- 按以下顺序拉线"+yy
- 退出vim
- 运行vim
- 粘贴线与"+p
测试 2 在航站楼 1 中
- 运行vim
- 按以下顺序拉线"+yy
- 退出vim
- 在第二个终端中,运行 vim
- 粘贴线与"+p
测试 3 在航站楼 1 中
- 运行vim
- 按以下顺序拉线"+yy
- 退出vim
- 跑步
cat
- 粘贴线与CTRL+Shift+v
当我使用 vim.gtk3 时,所有测试都有效
[编辑 3] 添加链接至asciicast 演示
我使用的是 X11 而不是 wayland
echo $XDG_SESSION_TYPE
x11