Windows 子系统 Linux - 让 VIM 使用剪贴板?

dma*_*man 46 linux clipboard vim windows-10 windows-subsystem-for-linux

为了现在摆脱这个问题并避免任何混淆......这是针对在 Windows 10 (ubunutu) 中运行的 Linux,也称为 WSL。它与 cygwin 和 windows 或独立的 linux 不同。是它自己的野兽。

因此,在我参考我已经阅读过的所有文章或评论之前已经问过的所有文章之前,请记住上述内容。

有谁知道如何从 Windows 剪贴板或 WSL Ubuntu Linux 仿真中进行复制和粘贴?我正在使用 set clipboard=unnamedplus。这不是工作,不是不管我用什么样的组合yy"+yy等等。

是的,它vim-gtk+xterm_clipboard支持。

Ant*_*ods 30

(编辑:2020 年 10 月)对于 2 向剪贴板neovim,我已经使用win32yank了几个月没有问题。放在win32yank.exe某处Linux中的路径(任何地方应该是罚款),以及以下添加到您的init.vim

set clipboard+=unnamedplus
let g:clipboard = {
          \   'name': 'win32yank-wsl',
          \   'copy': {
          \      '+': 'win32yank.exe -i --crlf',
          \      '*': 'win32yank.exe -i --crlf',
          \    },
          \   'paste': {
          \      '+': 'win32yank.exe -o --lf',
          \      '*': 'win32yank.exe -o --lf',
          \   },
          \   'cache_enabled': 0,
          \ }
Run Code Online (Sandbox Code Playgroud)

(原始答案)如果你只是想从 VIM 猛拉到 Windows,对于 WSL2 和 Ubuntu 20.04,Reddit 上的这个答案对我来说非常适合标准 VIM 和标准 WSL2 Ubuntu。

将以下内容放入您的.vimrc(例如,在底部):

" WSL yank support
let s:clip = '/mnt/c/Windows/System32/clip.exe'  " change this path according to your mount point
if executable(s:clip)
    augroup WSLYank
        autocmd!
        autocmd TextYankPost * if v:event.operator ==# 'y' | call system(s:clip, @0) | endif
    augroup END
endif
Run Code Online (Sandbox Code Playgroud)

  • 我真的不需要做 let g:clipboard 的事情。 neovim-0.5.0+ubuntu2+git202105110234-133351cbf-d569569c9 开箱即用地支持它。 :checkhealth 返回“确定:发现 Clipbard 工具:win32yank”。还值得一提的是 win32yank 是安装在 Windows 端的东西,而不是 WSL 端(choco install win32yank) (2认同)

Aer*_*ows 21

多亏了 github 用户robbiev这个解决方案对我有用

为了完成,这是他的回答的摘录:

  1. 安装VcXsrv (如果安装后启动,请停止)
  2. 使用新安装的程序XLaunch启动它(在开始菜单中搜索)。
  3. 使用所有默认选项,并确保选中剪贴板选项

  4. 最后,将配置保存到一个文件中,config.xlaunch从现在开始使用它来启动它)。

  5. 将 exportDISPLAY=localhost:0.0放在.bashrcWindows 的 bash 中并source ~/.bashrc在任何打开的终端中运行。

  6. 确保使用剪贴板支持安装 vim。vim --version | grep clipboard应该说+clipboard,不是-clipboard。此外,如果您:echo has('clipboard')在 vim 中运行 ex 命令并且它说它0没有编译剪贴板支持。

  7. 如果您没有剪贴板支持,请安装使用剪贴板支持编译的 vim 包,例如apt-get install vim-gtk.

  8. 现在您可以通过"*p和访问 Windows 系统剪贴板"*y,或者通过放入set clipboard=unnamed您的.vimrc文件将其设置为默认值。

正如robbiev提到的,您现在还应该能够使用 SSH X 转发从远程机器使用 Windows 剪贴板。

  • 当你(我)在 4 个月后遇到同样的问题时的喜悦,谷歌它和你(我的)过去的自我帮助你解决它! (18认同)
  • Windows 11 WSL 预先配置了 X 服务器,这将上述步骤简化为“sudo apt install vim-gtk”。 (2认同)

小智 11

您可以右键单击终端,然后在选项框中选中 CTRL + SHIFT + C/V 以通过终端进行复制粘贴操作。

WSL Ubuntu 终端


小智 8

2023 年 5 月解决方案

以下内容对我有用(2023/05/15,WSL Ubuntu 20.04.5 LTS):

如果您没有剪贴板支持,请安装使用剪贴板支持编译的 vim 包:

sudo apt-get install vim-gtk
Run Code Online (Sandbox Code Playgroud)

(这类似于 Aerows 答案,但你不需要 VcXsrv)


dwe*_*ein 2

如果您启用了快速编辑模式,您只需用鼠标选择文本并右键单击即可将其复制到剪贴板。

要启用“快速编辑模式”,只需右键单击顶部的控制台窗口并选择“属性”(和/或“默认”),然后勾选“快速编辑模式”

编辑:开箱即用,目前无法从 VIM 复制到 Windows 剪贴板。然而,在 WSL 存储库中的 GitHub-Issue 上,有些人似乎找到了一种分别使用 Xming 或 VcXsrv 来实现此目的的方法: https: //github.com/Microsoft/WSL/issues/892#issuecomment-275873108

编辑2:再次尝试使用.vimbuffer/sf/ask/3113658061/

  • 不,整个想法是使用 vim 命令 yy 而不必使用鼠标。 (2认同)