首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yank to system: tmux内部的新内容

Yank to system: tmux内部的新内容
EN

Stack Overflow用户
提问于 2020-04-04 11:32:19
回答 1查看 1.6K关注 0票数 4

我在这里发现了一个类似的问题,但没有给我一个有用的答案:System Clipboard Vim within TMUX within SSH session

我正在使用Gnome终端启动一个ssh会话,使用X转发到Debian 10。如果我启动了neovim并复制(yank)文本,那么这个文本将被复制到Gnome剪贴板上,一切都很好。

这是. .ssh/config的内容:

代码语言:javascript
复制
Host nuc
    ForwardX11 yes

我在.vimrc上有这个:

代码语言:javascript
复制
set clipboard^=unnamed,unnamedplus

但是当我在tmux里面开始新病毒的时候,这就不起作用了。

我有tmux和tmux-yank插件,这是因为当我从tmux内部复制新内容,然后退出tmux时,我可以看到使用xsel -o选择的文本。

如何将所选内容转发到系统剪贴板?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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或程序都有自己的环境变量的不同步副本。

类似于以下工作:

代码语言:javascript
复制
$ 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命令。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61027451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档