我使用 putty0.76 连接到服务器,并运行 tmux2.7。我需要在选择期间通过滚动将大量文本复制到本地剪贴板。我没有xclip
或pbcopy
安装并且无法安装它。我也无法安装tmux-yank
包。解决方案set -g terminal-overrides 'xterm*:smcup@:rmcup@'
因随机丢失输出行而导致问题。如何设置我的系统能够将文本从 Putty 复制到 Windows?
答案1
我相信这是一个非常好的问题。
自从 PuTTY 最初发布以来,我几乎一直在使用它,但近年来我已将工作流程转移到适用于 Linux 的 Windows 子系统。由于在 WSL 下运行的 Linux 发行版可以使用标准的 Linux OpenSSH 客户端,因此我对 PuTTY 的使用已经被搁置了。
也就是说,我仍然在一台旧计算机上安装了 PuTTY,所以我把它掸掉,看看我能想出什么。
不幸的是,我无法想出一种“纯 PuTTY”解决方案,该解决方案允许您从远程系统上运行的 Tmux 捕获多个屏幕的文本到 Windows 剪贴板,但这里有一些可能的建议。其中一些可能适合也可能不适合您的工作流程;或者他们可能会给你额外的想法来尝试:
选项#1:盲目建议
这terminal-overrides
是一次很好的尝试。如果这让您接近,那么我建议首先尝试解决“缺失行”问题。
在黑暗中尝试的事情包括设置set -w alternate-screen off
和设置 PuTTY 选项的组合禁用切换到备用终端屏幕。
您可能会发现其中之一合并的可以terminal-overrides
防止丢失文本,但同样,这只是一个完整的猜测。然而,如果我处于你的处境,这是我首先要尝试的事情。这是一个快速的练习。
选项#2:终极愚蠢的解决方法
我不确定您需要复制多少文本,但如果您只需要比屏幕适合的文本多几倍,也许可以减小 PuTTY 中的字体大小,直到适合......
我几乎不想建议它,但这可能是最简单的解决方案,尽管它很愚蠢和“hacky”。
选项 #3:复制到 Tmux 缓冲区,通过管道检索plink
并传输到 Windows 剪贴板 ( clip.exe
)
在远程系统上的 Tmux 中,进入复制模式Prefix[
使用箭头键移至所选文本的开头(或结尾)
PrefixSpace开始选择
使用箭头键移动到所选文本的另一端
PrefixAlt+W复制到 Tmux 缓冲区
在本地 Windows 系统上的 PowerShell 中,运行:
path\to\plink <connection_info> "tmux show-buffer" | clip.exe
这假设您通过 Pageant 使用密钥身份验证进行连接,因为它不能要求密码。
它连接到远程系统,其中 Tmux 将文本存储在其缓冲区中(
buffer0
默认情况下),从默认缓冲区中检索它,并将其通过管道传输到 Windowsclip.exe
以将其放置在剪贴板上。
选项 #4:WSL 下的本地客户端 Tmux
当然,我的首选。使用此方法,您可以在 Tmux 中创建一个无缝键绑定,将文本直接复制到 Windows 剪贴板。
所有这一切都是一次性设置。完成后,您可以使用单个 Tmux 键绑定激活它:
使用 Ubuntu(或其他发行版,如果您愿意的话)安装 WSL
WSL 的 Ubuntu 发行版中默认安装了 Tmux
tmux
在 WSL 下运行ssh
Ubuntu中通过命令连接远程系统进入 Tmux 复制模式Prefix[
使用箭头键移至所选文本的开头(或结尾)
PrefixSpace开始选择
使用箭头键移动到所选文本的另一端
Prefix:进入 Tmux 提示符
send-keys -X copy-pipe-and-cancel "clip.exe
如果有效,请将上一个命令绑定到一个键 via,
~/.tmux.conf
以便您可以随意将文本从 Tmux 复制到 Windows 剪贴板