我在这里发现了一个类似的问题,但没有给我一个有用的答案:System Clipboard Vim within TMUX within SSH session
我正在使用Gnome终端启动一个ssh会话,使用X转发到Debian 10。如果我启动了neovim并复制(yank)文本,那么这个文本将被复制到Gnome剪贴板上,一切都很好。
这是. .ssh/config的内容:
Host nuc
ForwardX11 yes我在.vimrc上有这个:
set clipboard^=unnamed,unnamedplus但是当我在tmux里面开始新病毒的时候,这就不起作用了。
我有tmux和tmux-yank插件,这是因为当我从tmux内部复制新内容,然后退出tmux时,我可以看到使用xsel -o选择的文本。
如何将所选内容转发到系统剪贴板?
发布于 2020-04-04 17:05:24
Vim和NeoVim对剪贴板的支持使用到X11服务器的连接。要连接的地址可从$DISPLAY环境变量中获得。
X11和终端多路复用器或会话管理器(如tmux或screen )的问题是,它们中运行的shell和程序的环境将是第一次创建tmux会话的环境。其中包括$DISPLAY变量。因此,这意味着tmux内部的vim将尝试使用创建tmux会话时的X11服务器的地址,而不是您刚才连接的地址。
一个肮脏但简单的解决方法是在重新连接到tmux时更新$DISPLAY变量,以确保您将连接到正确的X11服务器。请注意,对于在tmux中运行的每个shell或程序,您都需要这样做,因为每个shell或程序都有自己的环境变量的不同步副本。
类似于以下工作:
$ ssh -X nuc
nuc$ echo $DISPLAY
:1234.1
nuc$ tmux attach
tmux$ export DISPLAY=:1234.1
tmux$ vim这将使剪贴板适用于特定的Vim。
如前所述,如果您有许多tmux窗口和窗格,则必须在所有这些窗口和窗格上更新$DISPLAY。另外,如果您创建了新的窗口或窗格,它们也会从错误的$DISPLAY设置开始(尽管您也可以更新tmux环境中的$DISPLAY值以修复新的窗口和窗格,请参阅tmux的set-environment命令。)
https://stackoverflow.com/questions/61027451
复制相似问题