Comment copier la sortie d'une commande dans vim?

33

Par exemple, si je tape ' :pwd' pour obtenir le répertoire de travail actuel, je peux sélectionner le texte dans gvim mais je n'arrive pas à comprendre comment le copier dans le presse-papiers. Si j'essaye la même chose dans la console vim, je ne peux même pas le sélectionner avec la souris. Je voudrais que cela fonctionne avec toutes les commandes vim, comme set guifontpour copier la guifont=Consolas:h10:cANSIsortie.

Steven
la source

Réponses:

41

Vous cherchez cela,

:redir @* | set guifont | redir END

: la commande redir redirige la sortie d'une commande vers un registre (@ *). Le registre @ * fait référence au presse-papiers.

Pour plus d'informations à ce sujet,

:help :redir
asdfg
la source
n'a pas fonctionné dans vim-gtk un indice?
Sergio Abreu
@SergioAbreu essayez à la @+place de @*(enfin, cela fonctionne dans gvim).
leeand00
10

Essayez ' :r !pwd' pour obtenir le répertoire de travail actuel directement dans le fichier ouvert GVIM.
Vous pouvez ensuite le copier dans le presse-papiers comme vous le feriez pour tout autre contenu de fichier texte ouvert.

nik
la source
C'est utile, mais puis-je l'utiliser avec set guifontpar exemple?
Steven
Non, ce n'est pas une commande shell donc ça ne marchera pas.
Kevin Panko
4

Pour cet exemple particulier, vous pouvez le faire (notez le "!" Qui le fait passer par le shell):

:!pwd | xclip

ou

:!pwd | xclip -selection secondary

(selon la sélection X que vous souhaitez).

Vous devrez peut-être d'abord installer xclip

sudo apt-get install xclip

(ou équivalent)

nisc
la source
3

Si vous exécutez vim dans un xterm, maintenir la touche Maj enfoncée tout en sélectionnant le texte copiera le texte dans l'équivalent X du presse-papiers.

garyjohn
la source
X a deux presse-papiers (au moins); votre suggestion placera le texte dans la sélection PRIMAIRE (coller avec un clic du milieu) plutôt que dans la sélection h CLIPBOARD (coller avec Ctrl + V dans la plupart des applications).
Marius Gedminas