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)
在 Linux 上,Vim 的剪贴板支持与 X 密切相关。如果您希望 WSL 与 Windows 其余部分之间的集成程度与您在适当的 Linux Box 中所习惯的相同,则必须安装 Windows X Server。
在 Linux 端,安装支持剪贴板的 Vim 版本。包裹vim-gtk很好。
在 Windows 端,安装像VcXsrv这样的 X Server (有很多替代方案,您可以自行找到最适合您需求的一个)。
通常,您必须在 Linux 端编辑几个配置文件,以便 X 客户端使用正确的 X 服务器。具体要做什么取决于您选择的 X Server。
在 Vim 中,在 Linux 端,使用 或"+,"*就像在正版 Linux 机器上一样。