在Windows上使用WSL / Bash时,我希望能够像在vim中一样使用yyy3yp,但要连接到所有应用程序共享的系统剪贴板,而不要连接到vim的内部剪贴板...我已经拥有同上来管理剪贴板的历史记录。使用/mnt/c/Windows/System32/clip.exe来访问剪贴板...因此,即使我希望能够使用: br />
我知道neovim确实有这个选项,但是我现在真的不想尝试neovim ...我发现的解决方法是:

set clipboard^=unnamed


但是我认为这是一个非常可怕的解决方案...它使复制两个步骤的过程成为现实... br />
我当然可以n使用鼠标/ shift + ins进行一些复制和粘贴,但是我认为必须有一种方法可以使这种同步在Vim中正常工作。

评论

推荐此解决方案superuser.com/a/1439881/711405

对于使用Neovim的人,发现此问题的人,请参见github.com/neovim/neovim/wiki/…。

#1 楼

我知道这是一个非常老的问题,但是最近我找到了一个很好的解决方案。经过无奈之后,我遇到了通过复制和粘贴来访问Windows系统剪贴板的这些方法。 .stackexchange.com / a / 15190

let 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 :r!powershell.exe-命令“&{Get-Clipboard}”

– Walter A
20年1月30日在23:15

感谢您的帮助!我想知道是否可以对yank命令使用伪造的寄存器。像noremap“ + y:exe'norm a'.system('echo'.shellescape(join(v:event.regcontents,” \ “)))。'| clip.exe')(其中不起作用...)

– 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.exeCLIP /?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