为了立即解决这个问题并避免任何混淆...这是针对在 Windows 10(ubunutu)中运行的 Linux,也称为 WSL。它与 cygwin 和 windows 或独立的 linux 不同。它是它自己的野兽。
因此,在我引用我已阅读过的所有文章或评论之前曾问过这个问题之前,请记住以上内容。
有人知道如何让复制和粘贴从 Windows 剪贴板或 WSL Ubuntu Linux 仿真中工作吗?我正在使用 set clipboard=unnamedplus
。它不起作用,无论我使用什么组合,如yy
、"+yy
等。
是的,有vim-gtk
支持+xterm_clipboard
。
答案1
(编辑:2024 年 4 月)有了最新的版本,WSL version: 2.1.5.0
现在似乎就足够了,至少有了最新的 Microsoft Store 版本的 Ubuntu。Win11
set clipboard+=unnamedplus
neovim
(编辑:2020 年 10 月)对于双向剪贴板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,
\ }
(原始答案)如果你只是想从 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
答案2
为了完整起见,以下是他回答的摘录:
- 安装虚拟主机 (如果安装后启动,请停止它)。
- 使用新安装的程序启动它XLaunch(在开始菜单中搜索)。
使用所有默认选项,并确保剪贴板选项已检查。
最后,将配置保存到文件
config.xlaunch
(从现在开始使用它来启动它)。将导出放入Windows 的 bash
DISPLAY=localhost:0.0
中并在任何打开的终端中运行。.bashrc
source ~/.bashrc
确保 vim 已安装并支持剪贴板。
vim --version | grep clipboard
应该说+clipboard
,而不是。此外,如果您在 vim 中-clipboard
运行 ex 命令,它会说它没有编译剪贴板支持。:echo has('clipboard')
0
如果您没有剪贴板支持,请安装使用剪贴板支持编译的 vim 包,例如
apt-get install vim-gtk
。"*p
现在您可以通过和访问 Windows 系统剪贴板"*y
,或者通过放入文件将其设置为默认set clipboard=unnamed
值.vimrc
。
作为罗比耶夫提到您现在还应该能够使用 SSH X 转发从远程机器使用 Windows 剪贴板。
答案3
答案4
如果您正在使用 vim(或 neovim),也许您应该知道ANSI OSC52
这是一个试图解决这个“复制/粘贴”问题的标准(在特定情况下,例如在 SSH 终端中)。
那么这里有一个有用的插件维莫斯-奥斯恰恩克它实现了这个标准,你所要做的就是安装这个插件并为其设置一个键映射。你一定要试一试。