使用 putty 复制 tmux 中的文本

使用 putty 复制 tmux 中的文本

我使用 putty0.76 连接到服务器,并运行 tmux2.7。我需要在选择期间通过滚动将大量文本复制到本地剪贴板。我没有xclippbcopy安装并且无法安装它。我也无法安装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 下运行

  • sshUbuntu中通过命令连接远程系统

  • 进入 Tmux 复制模式Prefix[

  • 使用箭头键移至所选文本的开头(或结尾)

  • PrefixSpace开始选择

  • 使用箭头键移动到所选文本的另一端

  • Prefix:进入 Tmux 提示符

  • send-keys -X copy-pipe-and-cancel "clip.exe

  • 如果有效,请将上一个命令绑定到一个键 via,~/.tmux.conf以便您可以随意将文本从 Tmux 复制到 Windows 剪贴板

相关内容