55

For example, if I type ':pwd' to get the current working directory, I can select the text in gvim but I can't figure out how to copy it to the clipboard. If I try the same in console vim, I can't even select it with the mouse. I would like this to work with all vim commands, such as set guifont to copy the guifont=Consolas:h10:cANSI output.

Steven
  • 2,399

7 Answers7

62

Are you looking for this,

:redir @* | set guifont | redir END

:redir command redirects the output of a command to a register (@*). The register @* refers to the clipboard.

For more info on this,

:help :redir
asdfg
  • 2,936
18

Try ':r !pwd' to get the current working directory directly in to the GVIM opened file.
You can then copy it to clipboard like you would any other text file contents opened there.

nik
  • 57,042
6

If you're running vim in an xterm, holding the shift key while selecting the text will copy the text to the X equivalent of the clipboard.

garyjohn
  • 36,494
6

For this particular example you could do (note the "!" which makes it go through the shell):

:!pwd | xclip

or

:!pwd | xclip -selection secondary

(depending on which X-selection you want).

You might have to install xclip first

sudo apt-get install xclip

(or equivalent)

nisc
  • 1,112
0

You could send to a file and copy it from there:

SomeCommand > SomeFile.txt
vim SomeFile.txt

See How do I save terminal output to a file? on AskUbuntu.

0

let @*=execute('set guifont') will copy the output into the * register which corresponds to the clipboard.

Twonky
  • 131
0

I'm so late to the party... I've been looking for a way to pipe that list to my fzf-powered shell goodies for some time, and today this post allowed me to finish!

I got this nice one-liner, it could be done better but it works!

env _FILE="/tmp/.vim$RANDOM"  vim +":redir > ${_FILE} | oldfiles | redir END" +:q && cat  $_FILE | awk '{print $2}' | fzf

Now, it's easy to pipe that into any fzf-consuming pipe command, or whatever I need!

Thanks

mrArias
  • 101