:echo has('clipboard')
返回 1,但每当我执行"+yy"
或"*yy"
这些寄存器中似乎没有任何内容时。如果我使用常规yy
复制另一行文本,然后尝试从寄存器粘贴,没有任何反应CONTROL+V
。如果我尝试"+p
vim 粘贴我使用常规yy
命令复制的文本行。
这里发生了什么?顺便说一句,我在 FreeBSD 上。
您的 vim 版本可能无法使用 X11 剪贴板集成进行编译。
在 vim 中运行 :version 命令并在输出中查找 xterm_clipboard。它将以 +(支持)或 -(不支持)符号作为前缀。
可能发生的另一件事是您的DISPLAY
环境变量设置不正确。如果您从 tmux 或 screen 运行 vim,有时可能会发生这种情况。
尝试打开一个新终端,运行echo $DISPLAY
,然后从运行 vim 的终端,离开 vim,执行export DISPLAY=:0
(但将 :0 替换为其他终端的输出),然后重新进入 vim 并查看剪贴板是否可以正常工作"+p
。
这解决了我的问题!
什么对我Ubuntu 20.04
有用Vim 8.1.2269
sudo apt install vim-gtk3
说明
此软件包添加了对x_term_clipboard
invim
如果不存在的支持。
欲了解更多信息:单击此处,@blankblank 的答案。
注意:重新启动 vim 以检查这是否有效。
合十礼
如果您将某些内容复制到剪贴板并将其粘贴到 vim 中,则可以使用"+p
.
+
是quoteplus,表示已CLIPBOARD
记录的X 选择。:help quoteplus
了解更多信息。
如果你想将 vim 中的内容复制到剪贴板并通过 将内容粘贴到另一个地方Ctrl+v
,你可以这样做"+yy
,这会将当前行复制到剪贴板。
关于 vim 寄存器的更多信息:
:help registers
:help quotestar
我也遇到了这个问题。我的情况是 DISPLAY 在 tmux 中设置不正确。我找到了一个自动更新 tmux DISPLAY的脚本。
我的问题是我的输入源English (US, intl., with dead keys)
,除了 vim 没有用 x-clipboard 编译。
我在 Windows 上没有遇到同样的问题,但在 Ubuntu 20.04 上我必须按下"<space>+y
这个输入源。
似乎我可以通过将输入源切换到English (Intl. with AltGr dead keys)