如何在 WSL 中从 Vim 复制/粘贴

nom*_*men 5 vim clipboard windows-subsystem-for-linux

我正在尝试使用 Vim 来定位和复制/粘贴一些我需要分析和做笔记的代码。我在 Windows WSL 环境中使用 Debian。这就是为什么这很棘手。

常规的“yank and put to global register”命令"+y"*y命令不起作用。

另一方面,我只使用鼠标抓取终端文本的蛮力方法也不起作用。奇怪的是,WSL 终端有鼠标支持,而且 Vim 可以跟踪它的运动,在可视模式下选择等等。所以 Vim 拦截了选择命令,然后 ctrl-shift-c 没有选择任何东西复制到 Windows 剪贴板中。

我知道 WSL 终端支持复制和粘贴,如果cat我将文件复制到屏幕上,并使用 ctrl-shift-c 和 ctrl-v复制和粘贴,我可以成功地做到这一点。但后来我失去了导航的便利性。

将文本从 WSL 终端内的 Vim 复制到 Windows 剪贴板中的最佳方法是什么?

小智 41

答案是,进行 vim 视觉选择,然后执行命令:

:'<,'>w !clip.exe
Run Code Online (Sandbox Code Playgroud)

这会将当前选择输出到 shell 命令clip.exe,该命令利用 WSL 执行 Windows 可执行文件的能力(即使使用管道)。通过管道传送到的文本将clip.exe转到Windows剪贴板。

此外,此命令将整个文件保存到剪贴板(不是要求):

 :w !clip.exe
Run Code Online (Sandbox Code Playgroud)

  • 哇 - 当我看到新用户为老问题提供正确且有用的答案时,真的很少见!恭喜,欢迎来到 Stack Overflow!一个小建议 - 提供一些关于“为什么”有效的细节,以便人们更好地理解其机制并可以将其调整到其他用途。我将对其进行一些小编辑以添加此信息。 (2认同)

rom*_*inl 1

在 Linux 上,Vim 的剪贴板支持与 X 密切相关。如果您希望 WSL 与 Windows 其余部分之间的集成程度与您在适当的 Linux Box 中所习惯的相同,则必须安装 Windows X Server。

  1. 在 Linux 端,安装支持剪贴板的 Vim 版本。包裹vim-gtk很好。

  2. 在 Windows 端,安装像VcXsrv这样的 X Server (有很多替代方案,您可以自行找到最适合您需求的一个)。

  3. 通常,您必须在 Linux 端编辑几个配置文件,以便 X 客户端使用正确的 X 服务器。具体要做什么取决于您选择的 X Server。

  4. 在 Vim 中,在 Linux 端,使用 或"+"*就像在正版 Linux 机器上一样。