web-dev-qa-db-fra.com

Sous-système Windows Linux - Assurez-vous que VIM utilise le presse-papiers?

Désactivez-le maintenant et évitez toute confusion ... Il s’agit d’un système Linux fonctionnant sous Windows 10 (ubunutu), également appelé WSL. Ce n'est pas la même chose que Cygwin et Windows ou Linux autonome. C'est sa propre bête.

Alors gardez s'il vous plaît ce qui précède à l'esprit avant d'être référencé avec tous les articles que j'ai déjà lus ou commentez le fait que cela a déjà été demandé.

Est-ce que quelqu'un sait comment faire le copier-coller sans le presse-papier de Windows OR l'émulation WSL Ubuntu Linux? J'utilise l'ensemble clipboard=unnamedplus. Cela ne fonctionne pas, peu importe les combinaisons que j'utilise comme yy, "+yy, etc.

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

10
dman

Cette solution a fonctionné pour moi, grâce à l'utilisateur github robbiev .

Pour terminer, ceci est un extrait de sa réponse:

  1. Installez VcXsrv (s'il démarre après l'installation, arrêtez-le) .
  2. Lancez-le en utilisant le programme nouvellement installé . XLaunch ( recherchez dans le menu Démarrer ).
  3. Allez avec toutes les options par défaut et assurez-vous que les options du presse-papier sont cochées.

  4. À la fin, enregistrez la configuration dans un fichier, config.xlaunch ( utilisez-le pour le démarrer à partir de maintenant ).

  5. Mettez exportation DISPLAY=localhost:0.0 dans votre .bashrc dans bash pour Windows et exécutez source ~/.bashrc dans n’importe quel terminal ouvert.

  6. Assurez-vous que vim est installé à l'aide du support du presse-papiers. vim --version | grep clipboard devrait dire +clipboard, pas -clipboard. De même, si vous exécutez la commande ex :echo has('clipboard') dans vim et qu’il indique 0, le support du Presse-papiers n’est pas compilé dans.

  7. Si vous ne supportez pas le presse-papiers, installez un package vim compilé avec le support du presse-papiers, par exemple. apt-get install vim-gtk.

  8. Vous pouvez maintenant accéder au Presse-papiers du système Windows via "*p et "*y, ou le définir par défaut en mettant set clipboard=unnamed dans votre fichier .vimrc.

Comme robbiev mentionne que vous devriez maintenant pouvoir utiliser le Presse-papiers Windows à partir de machines distantes utilisant le transfert SSH X.

8
Aerows

Si vous avez activé le mode QuickEdit , il vous suffit de sélectionner le texte avec votre souris et de cliquer avec le bouton droit de la souris pour le copier dans le Presse-papiers.

Pour activer le mode QuickEdit , cliquez avec le bouton droit de la souris sur la fenêtre de la console et sélectionnez Propriétés (et/ou Par défaut ), puis cochez Mode d'édition rapide .

EDIT: Il est actuellement impossible de copier de VIM dans le presse-papiers de Windows. Cependant, sur un problème GitHub dans le référentiel WSL, certains types semblent avoir trouvé un moyen de le faire en utilisant respectivement Xming ou VcXsrv: https://github.com/Microsoft/WSL/ issues/892 # issuecomment-275873108 .

EDIT2: Autre tentative d'utilisation de .vimbuffer: https://stackoverflow.com/questions/44480829/how-to-copy-to-clipboard-in-vim-of-bash-on-windows

1
dwettstein

Il y a beaucoup de bizarreries avec le terminal WSL, mais utiliser un copier/coller croisé de Vim est la principale nuisance de mon livre. Rien de ce que j'ai essayé en avril 2018 ne fonctionnait pour coller dans Vim ou d'autres zones (en utilisant une santé normale), alors essayons de contourner le problème, ainsi que d'autres, comme tampon, pour le moment. Ce n'est pas une solution WSL directe, mais une solution de contournement utilisant un meilleur terminal + SSH jusqu'à ce que MS fournisse un correctif.

PuTTY , ou son fork étendu Kitty , offre un terminal plus robuste par rapport au WSL. Nous pouvons nous connecter au WSL (ou à l’un de vos autres serveurs) en utilisant SSH via localhost, en utilisant un port personnalisé, et obtenir un terminal plus complet, comprenant presque toutes les fonctionnalités de Vim pour le collage bidirectionnel, natif, le défilement, etc. [ Vous aurez peut-être besoin de Tweak Vim conf pour déclencher toutes les fonctionnalités].

PuTTY/Kitty nécessite un serveur SSH disponible dans WSL, sur un port localhost personnalisé. Si vous n'avez pas encore configuré de serveur SSH localhost sur votre WSL, voici un bref aperçu de la procédure à suivre:

Étape 1) Ouvrez le terminal Ubuntu WSL, effectuez un Sudo su pour authentifier en tant que root, exécutez vim /etc/ssh/sshd_config pour ouvrir le conf du serveur SSH.

Étape 2) Recherchez "Port" près de la première poignée de lignes. Il est peut-être défini sur 22. Nous devons définir un port personnalisé pour notre WSL SSH qui n'entre pas en collision. Appuyez sur i pour modifier. Utilisons le port 9977 par exemple.

Étape 3) Si vous êtes un dev, ou si vous n'avez pas besoin de vous préoccuper des clés de votre SSH WSL localhost, recherchez une authentification par mot de passe. Vous pouvez définir PasswordAuthentication yes. Sinon, les clés et la sécurité supérieure, ou l'accès public via des pare-feu sur WSL, sortent du cadre de cette réponse.

Étape 4) Une fois l'édition terminée, appuyez sur échap pour quitter le mode édition, puis enregistrez + quittez le fichier :wq. Redémarrez le service ssh en utilisant service ssh restart. Laissez WSL ouvert à ce stade en tant que console principale.

Étape 5) Créez une nouvelle session PuTTY/Kitty, connectez-vous à localhost, à l'aide de votre port personnalisé (9977 dans notre exemple). Connectez-vous avec vos informations d'identification WSL, Sudo su si vous avez besoin de root. Vous devriez maintenant avoir un shell beaucoup plus robuste disponible. Répétez ou screen autant de vues que nécessaire.

Je sais que ce n'est pas une réponse directe, mais au moins c'est une solution pour l'instant :)

1
dhaupin

Une solution partielle via ConEmu

Je ne sais pas pourquoi personne n'a mentionné ConEmu. Il peut au moins gérer la moitié du problème du presse-papiers:

  • Pour coller du contenu du presse-papiers Windows dans WSL, Ctrl + V normal obtiendra les résultats escomptés.

    • Un avantage est que: si l'on doit copier un chemin absolu dans Windows, lors du collage dans ConEmu, c:/users/name sera transcrit en /mnt/c/users/name. Ceci est exécutable via WSL de manière native.
  • Pour copier depuis WSL, pour le moment, je devrais quand même utiliser mon curseur maison. Cela fonctionne plus de 90% du temps.

Selon mon cas d'utilisation, je n'ai pas tendance à copier beaucoup à partir de WSL; et apprécions beaucoup le collage-aide de ConEmu.

1
llinfeng

Vous pouvez cliquer avec le bouton droit de la souris sur le terminal, puis dans la zone des options, cocher CTRL + MAJ + C/V pour les opérations de copier-coller via le terminal.

WSL Ubuntu Terminal

0
errorprone