y
,yy
,3y
和p
,但要连接到所有应用程序共享的系统剪贴板,而不要连接到vim的内部剪贴板...我已经拥有同上来管理剪贴板的历史记录。使用/mnt/c/Windows/System32/clip.exe
来访问剪贴板...因此,即使我希望能够使用: br /> 我知道neovim确实有这个选项,但是我现在真的不想尝试neovim ...我发现的解决方法是:
set clipboard^=unnamed
但是我认为这是一个非常可怕的解决方案...它使复制两个步骤的过程成为现实... br />
我当然可以n使用鼠标/ shift + ins进行一些复制和粘贴,但是我认为必须有一种方法可以使这种同步在Vim中正常工作。
#1 楼
我知道这是一个非常老的问题,但是最近我找到了一个很好的解决方案。经过无奈之后,我遇到了通过复制和粘贴来访问Windows系统剪贴板的这些方法。 .stackexchange.com / a / 15190let s:clip = '/mnt/c/Windows/System32/clip.exe'
if executable(s:clip)
augroup WSLYank
autocmd!
autocmd TextYankPost * call system('echo '.shellescape(join(v:event.regcontents, "\<CR>")).' | '.s:clip)
augroup END
end
粘贴,映射到伪造的注册表命令,即“ = p或” + p或其他内容。
map <silent> "=p :r !powershell.exe -Command Get-Clipboard<CR>
map! <silent> <C-r>= :r !powershell.exe -Command Get-Clipboard<CR>
" I thought this will be better :)
noremap "+p :exe 'norm a'.system('/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command Get-Clipboard')<CR>
右键单击可以粘贴,但是如果您不想使用鼠标,则不能令人满意
评论
在WSL vi上,我添加了nnoremap
– Walter A
20年1月30日在23:15
感谢您的帮助!我想知道是否可以对yank命令使用伪造的寄存器。像noremap“ + y:exe'norm a'.system('echo'.shellescape(join(v:event.regcontents,” \
– Troropio
20-04-21在8:41
#2 楼
那怎么办?if system('uname -r') =~ "Microsoft"
augroup Yank
autocmd!
autocmd TextYankPost * :call system('clip.exe ',@")
augroup END
endif
uname
是一个Linux终端命令,它返回OS信息,因此它将为WSL返回Linux
。带有-r
标志的命令将返回OS的发行信息,因此该命令应包含“ Windows”。 TextYankPost
是WSL中的Windows命令提示符命令(请参阅命令提示符中的:h TextYankPost
),它复制vim
或通过clip.exe
或CLIP /?
从text
返回到clipbord中。这里的command
是通过vim函数text | clip.exe
从vim执行的。 评论
在Neovim中,可以使用has('wsl')代替system('uname -r')=〜“ Microsoft”。
–贾斯汀·凯斯(Justin M. Keyes)
19年6月12日5:39
#3 楼
一段时间前,我已经为WSL支持制作了PR,以进行仿造。使用help fakeclip
。评论
仍然保持?
–克里斯
19年1月13日在15:50
评论
推荐此解决方案superuser.com/a/1439881/711405对于使用Neovim的人,发现此问题的人,请参见github.com/neovim/neovim/wiki/…。