gpt4 book ai didi

Ubuntu:如何将文本从在 ssh 上运行 vim 的终端复制到本地剪贴板

转载 作者:行者123 更新时间:2023-12-02 14:28:30 29 4
gpt4 key购买 nike

有许多类似的问题,但没有一个答案有效,而且它应该是微不足道的,因为它曾经是。

设想:
在 Ubuntu 桌面系统上,我正在运行一个终端,我通过 SSH 连接到远程服务器。通常,我可以用鼠标从终端(即“从”远程服务器)中选择文本,然后用 将其复制到本地。 CTRL+SHIFT+C (而不是像在终端以外的任何应用程序中那样使用 CTRL+C)并将选择复制到本地剪贴板,然后我可以将其粘贴到任何地方。这也将允许我将其粘贴到终端本身(另一个)与 CTRL+SHIFT+V ,最终将其粘贴到远程服务器(包括 vim)上运行的任何内容。

这曾经在 时可以工作(在远程服务器上使用 debian 8)。在远程服务器上运行 vim ,所以澄清一下:在我本地的 ubuntu 机器中是一个终端;在终端内,我通过 ssh 连接到远程服务器;在我正在运行 vim 的服务器上;所以远程服务器上用vim打开的文件的内容在我本地机器的终端中是可见的。 Ctrl+Shift+C 曾经允许我将选择复制到本地计算机上的本地剪贴板,然后我可以将其粘贴到本地文本编辑器或回到远程计算机上的 vim。这样,我可以从远程 vim 复制粘贴到本地 gedit,反之亦然,或者从远程 vim 复制到远程 vim(通过我的本地剪贴板),或者从远程 vim 复制到另一个终端中的另一个远程 vim,无论是在同一台服务器上还是在另一台服务器上。我完全清楚远程服务器在这种情况下对复制和粘贴一无所知。本地系统只是复制它在终端中看到的文本(恰好是在远程机器上通过 ssh 运行的某些内容的输出),然后将其粘贴回终端(这导致它通过 ssh 进入远程机器)。我知道,它对我有用。

当涉及 vim 时,这不再起作用(在远程机器上使用 debian 10)。现在在远程服务器上我正在运行 Debian 10。只要在远程服务器上我是 ,Ctrl+Shift+C 仍然有效(复制到本地剪贴板)未运行 vim .例如,我可以使用 Ctrl+Shift+C 将文本从远程控制台复制到本地剪贴板。无论我是否在远程机器上的 vim 中,Ctrl+Shift+V 仍然有效。但是,当vim 在终端内的远程计算机上打开,Ctrl+Shift+C 不会复制到本地剪贴板。

我的猜测是 Ctrl+Shift+C 以某种方式被 vim 捕获。

那么,当这个终端恰好正在运行 ssh 并且 vim 恰好在远程机器上打开时,如何将文本从终端复制到 ubuntu 上的剪贴板?

我知道我可以使用 y到“yank”(即复制)和 p在 vim 中远程粘贴。然而,这不是我要找的。这一切都是远程发生的,只允许我在远程机器上从 vim 复制到 vim(也许也从 vim 复制到远程机器上的其他东西,我不在乎)。这不允许我从远程机器上的 vim 复制到本地机器上的文本编辑器。

我不想要一个复杂的解决方案,涉及从vim“拉”到远程机器上的其他东西,然后将文件ftp到我的本地机器或其他东西。那是垃圾。我要本地复制所见即所得 本地 尽管事实上在终端中运行的是通过远程机器上的 ssh 的 vim,但在终端中。

我曾经能够做到这一点。我仍然可以使用运行 debian 8 的远程服务器。但不能在运行 debian 10 的远程服务器上。

我怎样才能做到这一点?

最佳答案

你看到的实际上是 :set mouse=a 的结果(或 :set mouse=nvi )在 Vim 中,这意味着 Vim 将告诉终端它想要捕获和处理鼠标事件,因此它们将转到远程 Vim 而不是留在本地终端。

所以问题实际上不在于 CTRL+SHIFT+C 不工作......但是它没有什么可复制的,因为终端中没有选择,因为鼠标事件被发送到远程 Vim,它使用它们来选择一个 Visual block 。

Debian 8 发布了 Vim 版本 7.4,而 Debian 10 发布了 Vim 8+,并且从 Vim 8 开始一个新的 defaults.vim当你没有 vimrc 文件时运行它并且会设置 mouse=a (或 mouse=nvi )自动,所以也许这就是您从中获取设置的地方?或者如果你有一个 vimrc 文件,也许 Debian 现在在系统 vimrc 文件中包含了这个设置,这就是它的来源......

你有几个选择来解决这个问题。一种是禁用 Vim 对鼠标的捕获,使用 :set mouse= ,您可以在正在运行的 Vim 上执行以确认它为您解决了问题,或者添加到您的 ~/.vimrc文件以使其永久化。 (如果您是第一次创建新的 vimrc 文件,请参阅 :help defaults.vim 中的说明以保留您一直使用的默认值!)

另一种选择是您的终端可能有一种方法来覆盖鼠标捕获并使用本地选择,即使在终端中运行的应用程序已经捕获了鼠标。这可能涉及在按住修饰键的同时进行选择,例如 ALT CTRL 或者 转移 ,以便终端知道您实际上想要鼠标的其他行为来执行此特定操作。终端使用的修饰键可能会有所不同,但其中之一可能会触发您想要的行为。这通常很容易分辨,因为终端中的鼠标选择在视觉上与 Vim 中的可视模式完全不同。使用覆盖完成正常的鼠标选择后,您可以使用 复制文本CTRL+SHIFT+C 就像你习惯的那样。这种方法为您带来了两全其美的好处,因为您仍然可以在 Vim 中使用鼠标,但是当您真正想要复制和粘贴的选择时,您可以使用它。

关于Ubuntu:如何将文本从在 ssh 上运行 vim 的终端复制到本地剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59443803/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com