不确定我的工作流程是否奇怪/不寻常,但我有一台 Windows 机器,我使用 Windows 终端。我通常使用 Windows 终端上的 WSL 通过 ssh 进入远程服务器。远程服务器正在运行 RHEL。
现在,我在尝试使用 复制到远程服务器上的剪贴板时遇到问题xclip
。xclip
总是返回Error: Can't open display
。即使我手动设置export DISPLAY=:0
它仍然会给我同样的错误。我也设置ForwardX11 yes
了,~/.ssh/config
但这也没有帮助。
我需要这个的原因是,我最终想在远程服务器上启用 tmux 中的选择和复制功能。它.tmux.conf
看起来会像这样:
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'xclip'
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'xclip'
在 WSL 上,我只需将其替换'xclip'
为clip.exe
,它就可以工作。但由于这是在 Windows 终端中运行的远程服务器,因此并非所有 Windows 可执行文件都可用。
有人知道我该如何启用此功能吗?提前致谢!
答案1
好的,我明白了。其实很简单 - 一定要阅读文档!
因此,xclip
依赖于 X 服务器正在运行,而我的远程 RHEL 服务器并非如此。检查 X 是否正在运行的一个简单方法是echo $DISPLAY
查看它是否已设置。但据我所知,这并不总是有效。另一种检查方法是ps -e | grep X
。无论哪种方式,对于我的情况,X 都没有运行,因此xclip
不起作用。
但,tmux 文档确实讨论了剪贴板的内容。只需按照文档操作,我就能修复它。需要注意的重要一点是,您应该使用set-clipboard
选项/方法,不是因为Piping to an external tool like xsel
X 服务器没有运行。
总结一下,请阅读 tmux 文档这里并选择OSC 52 and the set-clipboard option
。以下是我的相关部分.tmux.conf
:
set -as terminal-features ',xterm-256color:clipboard'
set-option -s set-clipboard on
但是,在 Vim 中,将内容复制到剪贴板仍然不起作用,因为默认情况下,Vim 会尝试使用 将其复制到剪贴板xclip
。但目前我的问题已经得到很好的解决。
编辑:
最终结果是,在我的远程服务器中的 tmux 中,我只需使用鼠标选择一些文本,例如按下鼠标并拖动以选择几个单词,然后释放鼠标,我的选择就会自动复制。然后我可以按 Ctrl + Shift + V 将其粘贴到其他地方。选择文本时无需按住 Shift。