2009-02-01 13 views

Répondre

34

Si vous collez dans un Dans la fenêtre du terminal, Vim pense que vous l'avez tapé à la main, et il va essayer de mettre à jour l'affichage au fur et à mesure.Vous pouvez accéder à votre presse-papiers (sur OS X) en utilisant les pbpaste et pbcopy commandes, de sorte que vous pouvez simplement le faire dans vim:

:read !pbpaste 

ou dans une coquille:

bash$ pbpaste | vim - 

Si vous utilisez l'interface graphique vim, utilisez le registre "* pour coller (ce qui est ce que le menu contextuel fait): dans la fenêtre de terminal

"*P <- in normal mode 

est généralement une coller mauvaise idée, essayez et utilisez pbpaste où vous le pouvez.

2

avez-vous essayé le mode collage? définir coller/définir nopaste?

+0

Aucun changement: Ceci est ma pâte: http://dpaste.com/115362/ –

1

Je ne sais pas si c'est un problème de Mac ou autre chose, mais je n'ai aucun problème à coller cette quantité de texte dans Vim. J'ai essayé sur Windows et Linux, et n'ai pas vu de problèmes.

Je ai édité avec succès des fichiers de plusieurs centaines de megs (fichiers journaux) dans Vim (le chargement est lent, mais une fois que le texte est lu tout est assez accrocheur).

+0

Ce n'est pas un problème de Mac. Le même problème est aussi dans Ubuntu. –

+0

S'il vous plaît, voir la question. Je l'ai clarifié. –

+0

Le problème semble être de coller du texte qui n'a pas d'entrées ou d'espaces. –

0

Si vous utilisez Apple Terminal, essayez un autre terminal, comme iTerm. Parfois, le "build-in" terminal n'est pas vraiment réactif pour une tâche commune. Je ne sais pas pourquoi ...

+0

Ce n'est pas le problème: le même problème est aussi Ubuntu. S'il vous plaît, voir la question à nouveau. Je l'ai clarifié. –

1

Mais si elle est sur le web, vous devriez avoir essayé:

:e http://link/to/file 

Ensuite, si nécessaire l'enregistrer comme un fichier local.

Et si elle est lente à cause du redécoupage, regardez cette option:

  *'lazyredraw'* *'lz'* *'nolazyredraw'* *'nolz'* 
'lazyredraw' 'lz' boolean (default off) 
      global 
      {not in Vi} 
    When this option is set, the screen will not be redrawn while 
    executing macros, registers and other commands that have not been 
    typed. Also, updating the window title is postponed. To force an 
    update use |:redraw|. 

Et si c'est un fichier local, puis coller n'est pas nécessaire: essayer

:read file 

à la place.

+0

Ce n'est pas dans le web. Je l'ai édité d'abord en enlevant entre. –

+0

Si ce n'est pas sur le web alors pourquoi ne pas simplement ': e/path/to/file'? –

6

C'est "normal". C'est lent parce que redessiner le texte des milliers de fois est lent. Comme vous collez la ligne longue, il est constamment mis à jour l'affichage (à cause de comment vim traite du texte, ou comment le terminal transmet le texte vim, je suppose).

J'ai essayé de coller le texte dans vim (en utilisant iTerm) et il a le même problème, il faut du temps pour coller. J'ai essayé :set paste et :set nowrap et toujours aussi lent. Coller la ligne droite dans un terminal est tout aussi lent

Avec le lien dpaste que vous mentionnez, il y a un lien texte brut, que vous pouvez simplement wget et modifier:

curl http://dpaste.com/115362/plain/ | vim - 
2

si vous: la syntaxe est désactivée, vous pouvez parfois améliorer une pâte in situ d'un long fichier de ligne unique. Un exemple serait un fichier XML généré par une machine. Vous pouvez probablement désactiver le redessiner de vim tout en collant, regardez: il redessine, mais ça vaut toujours la peine d'utiliser la ligne de commande comme si vous répétez la procédure ou similaire, vous pouvez toujours l'automatiser avec une macro script/vim

17
:read !pbpaste 

Si vous utilisez Linux, utilisez:

xsel --clipboard --output 

ou:

xclip -selection clipboard -o 

au lieu de pbpaste.

+4

Ceci est un épargnant de vie! Vim pâte a été de plus en plus lente et lente au fil des ans pour une raison quelconque, au point qu'elle est maintenant insupportable. Pour être très explicite, pour les utilisateurs d'Ubuntu/Kubuntu, installez en utilisant "sudo install xsel". Et puis dans vim, tapez ": r! Xsel --clipboard --output" pour coller le presse-papiers. –

+0

MERCI BEAUCOUP. J'ai cherché xsel pour toujours. – EricR

3

Je préfère la pâte/nopaste définie comme Masi suggéré. Dans .vimrc, vous pouvez associer un caractère à la fonction de bascule (si nécessaire).

à savoir

set pastetoggle=§