Comment faire en sorte que Vim utilise le presse-papiers dans le Sous-système Windows pour Linux ?

Ceci concerne Linux fonctionnant dans Windows 10 (Ubuntu), également connu sous le nom de WSL. Ce n’est pas la même chose que Cygwin et Windows ou Linux autonome. C’est un système à part.

Quelqu’un sait-il comment faire fonctionner le copier-coller à partir du presse-papiers Windows OU de l’émulation Ubuntu Linux WSL ? J’utilise set clipboard=unnamedplus. Cela ne fonctionne pas, quelle que soit la combinaison que j’utilise comme yy, "+yy, etc.

Oui, c’est vim-gtk avec le support +xterm_clipboard.


Source : Super User

(Modification : avril 2024) Avec la dernière version WSL version: 2.1.5.0 sur Win11, simplement avoir set clipboard+=unnamedplus semble maintenant suffire pour neovim, au moins avec les dernières versions Microsoft Store d’Ubuntu.

(Modification : octobre 2020) Pour le presse-papiers bidirectionnel sur neovim, j’utilise win32yank depuis plusieurs mois sans problème. Placez win32yank.exe quelque part dans votre PATH sous Linux (n’importe où devrait convenir), et ajoutez le code suivant à votre 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,
          \ }

(Réponse originale) Si vous souhaitez simplement copier depuis VIM vers Windows, pour WSL2 et Ubuntu 20.04, cette réponse sur Reddit a parfaitement fonctionné pour moi avec VIM standard et WSL2 Ubuntu standard.

Ajoutez le code suivant dans votre .vimrc (en bas, par exemple) :

" 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