web-dev-qa-db-fra.com

Coller de vim in terminal à Google Docs (Firefox + Vimperator) - besoin de comprendre

J'ai eu quelques problèmes avec le copier-coller de texte de vim in terminal vers le document Google Docs (aka Drive) (ci-après GDd) dans le navigateur FF (avec Vimperator).

Remarque:

  • J'ai un fichier ouvert dans Vim 7.2 dans le terminal
  • :version affiche à la fois +clipboard et +xterm-clipboard
  • Je suis sur Ubuntu 10.04 LTS, donc je ne pense pas que ce soit lié à Unity
  • Je veux utiliser Vim, pas GVim, ni gedit ...
  • Je suis un passionné de navigation sans souris, donc la solution avec la souris n'était pas ce que je voulais.
  • J'ai la solution, mais j'ai besoin de compréhension.

Ce que j'ai essayé et où ça me mène:

  • Tirer un texte entier dans un fichier via: ggvGy me permet de:
    • collez-le avec le bouton central de la souris , PAS avec Ctrl+v ou Shift+Insert
      1. ici, dans la zone de saisie du texte de la question
      2. en gedit
      3. mais PAS dans GDd où je veux le coller, même si je passe Vimperator en mode d’authentification directe avec Insert
    • ne s'affiche pas dans XClip après xclip -o
    • À partir de gedit, je peux copier-coller le texte dans GDd (le mode d'intercommunication de Vimperator n'est pas requis).
  • :%! !xclip -i (ou :first, last)
    1. rapporte le fichier entier (toutes les lignes, pour être précis) comme filtré, bien que Shell retourne 1
    2. `xclip -o 'ne renvoie rien (est vide) ou retourne la valeur précédemment copiée
    3. avec 2. pas de surprise, mais je ne peux pas du tout coller non seulement à GDd mais aussi à gedit ou ici
  • régler le presse-papier (:set clipboard=unnamed) sur non nommé n'aide pas
  • tiliser "+y ou "*y sur un fichier texte complet fait l'affaire

Donc, la question (c'est en fait trois, dites "scinder" et je le ferai):

  1. pourquoi le bouton central de la souris colle différentes choses que Ctrl + v et comment savoir ce qui sera collé avec chacun?
  2. pourquoi yanking (sans registres) fonctionne avec la souris mais pas avec le clavier/XClip?
  3. pourquoi le registre non nommé n'a-t-il pas aidé? Après réglage, les registres unnamed et * doivent être identiques.

Par défaut, le Presse-papiers n'est rempli que si vous effectuez une sélection visuelle (avec v ou, de manière équivalente, avec votre souris). (Dans tout ce qui suit, nous parlons du "vieux" presse-papiers X, le tampon primaire). Pour affecter le presse-papiers en utilisant "y" même sans sélection visuelle, vous devez :set clipboard=unnamed. Je ne sais pas pourquoi, dans votre premier exemple, le xclip -o ne montre aucun contenu; cela devrait. J'ai une hypothèse à ce sujet, cependant, voir ci-dessous.

J'ai 10.04. Je commence vim.

:set clipboard
clipboard=autoselect,exclude:cons\|linux

Je tape du texte au hasard:

asd fa sdf
asdf

Maintenant je fais ggVGy. Dans une autre fenêtre du terminal, je tape

xclip -o

xclip me montre correctement le contenu du fichier. Je peux le coller n'importe où avec le bouton central de la souris, par exemple ici:

asd fa sdf
asdf

Même si je commence juste la sélection visuelle avec "v", déplacez-vous et tirez avec "y". Cependant, si je fais "yy" (yank la ligne en cours, sans sélection visuelle), le presse-papiers n'est pas mis à jour.

OK, maintenant je le fais

:set clipboard=unnamed

Je fais ggyy (allez à la première ligne, tirez sur le registre sans nom sans utiliser la sélection visuelle). Maintenant, xclip -o affiche "asd fa sdf" et je peux le coller avec le bouton central de la souris; le presse-papiers X a été rempli avec la commande yank.

Résultat final

Sans toucher à vimperator, cela fonctionne sur mon système comme prévu. Veuillez répéter ce qui précède (sans utiliser vimperator, voir ci-dessous) pour vous assurer que lorsque vous faites ggVGy, xclip -o, affichez le contenu (contrairement à votre exemple).

Mon hypothèse est que vimperator, pour une raison quelconque, réinitialise le presse-papiers X. Essayez de séparer la session vim habituelle de vimperator:

  1. Si vous sélectionnez quelque chose dans le terminal avec votre souris (bouton gauche, sans Ctrl-Maj-C), pouvez-vous le coller avec le bouton central dans vimperator?

  2. Si vous sélectionnez visuellement quelque chose avec vi, pouvez-vous le coller avec le bouton central de la souris dans gedit (apparemment, vous pouvez) et le voir avec xclip -o (vous dites que vous ne pouvez pas, mais je ne n'y crois pas :-); sinon, le bouton central de la souris ne fonctionnerait pas)?

3
January
  1. Linux a deux presse-papiers (appelés "tampon primaire" et "tampon secondaire"). L'un est utilisé pour copier/coller à la souris et l'autre est pour Ctrl-C/Ctrl-V. Donc, si vous sélectionnez quelque chose (par exemple, pour le supprimer), le contenu de ce que vous avez mis dans le presse-papier à l’aide de Ctrl-C reste intact.

  2. Si vous souhaitez copier sans tirer, essayez de sélectionner le texte que vous souhaitez copier et appuyez sur CTRL + MAJ + C, puis sur CTRL + MAJ + V pour le copier/coller.

J'espère que cela aiderait

4
user91632