En utilisant WSL / Bash pour Windows, je veux pouvoir utiliser y
yy
3y
et de p
la même manière qu'ils fonctionnent toujours dans vim, mais en me connectant au presse-papiers du système partagé par toutes les applications, pas au presse-papiers interne de vim ... J'ai déjà idem pour gérer le presse-papiers histoire.
Il semble que Vim dispose déjà d'une option intégrée pour synchroniser le tampon copier / coller avec le presse-papiers du système ... Pourtant, le problème lors de l'exécution de WSL est que vous devez réellement utiliser /mnt/c/Windows/System32/clip.exe
pour accéder au presse-papiers ... Donc, même si je voudrais pouvoir utiliser:
set clipboard^=unnamed
Il ne semble pas encore avoir de support WSL.
Je comprends que le neovim a cette option, mais je ne veux pas vraiment expérimenter avec le neovim en ce moment ...
Pour l'instant, la chose la plus proche d'une solution de contournement que j'ai trouvée est:
nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
Mais c'est une solution vraiment horrible à mon avis ... Cela fait de la copie un processus en deux étapes ...
Bien sûr, je peux faire du copier-coller avec la souris / shift + ins, mais je pense qu'il doit y avoir un moyen pour que cette synchronisation fonctionne correctement dans Vim.
la source
Réponses:
Je sais que c'est une très vieille question, mais j'ai récemment trouvé une bonne solution. Après beaucoup de frustration, je suis tombé sur ces façons d'accéder au presse-papiers du système Windows en copiant et collant.
En copiant, avec la version vim> = 8.0.1394, comme indiqué dans une autre réponse https://vi.stackexchange.com/a/15190
Coller, mapper sur de fausses commandes de registre, c'est-à-dire "= p ou" + p ou autre chose.
Le collage avec le bouton droit fonctionne, mais n'est pas satisfaisant si vous ne souhaitez pas utiliser la souris
la source
vi
j'ai ajouténnoremap <S-Insert> :r !powershell.exe -Command "& {Get-Clipboard}"<Enter>
noremap "+y :exe 'norm a'.system('echo '.shellescape(join(v:event.regcontents, "\<CR>")).' | clip.exe')<CR>
(qui ne fonctionne pas ...)Et ça?
uname
est une commande de terminal Linux qui renvoie des informations sur le système d'exploitation, de telle sorte qu'elle retourneraLinux
pour WSL. Alors qu'avec le-r
drapeau, la commande retourne les informations de version du système d'exploitation, elle devrait donc inclure "Windows".TextYankPost
est un événement vim (voir:h TextYankPost
dansvim
), qui détecte votre activité de coup de texte.clip.exe
est une commande d'invite de commande Windows en WSL (voirCLIP /?
dans l'invite de commande) qui copietext
ou retourne dans uncommand
clipbord viatext | clip.exe
oucommand | clip.exe
. Ici, leclip.exe
est exécuté à partir de vim par la fonction vimsystem
.la source
has('wsl')
place desystem('uname -r') =~ "Microsoft"
.J'ai fait un PR pour le support WSL à fakeclip il y a quelque temps.
Voir vimawesome sur la façon de l'installer;
help fakeclip
pour l'utilisation.la source