user1595789
user1595789

Reputation: 261

Vi Copy-paste without navigating to the line

Is it possible for me to say the copy the contents at a specific line (x) and paste in the current line without actually needing to go to x.

Right now, I need to type :x<Enter>yy<C-o>p. I just wanted to see if this can be done more efficiently.

Upvotes: 8

Views: 243

Answers (4)

Kent
Kent

Reputation: 195059

there is :t you can use.

for example if you are on line #77, and you want to copy line#7 below your current line, that is, #78, you just:

:7t.

after executing this, your cursor will be on line#78, the newly "pasted" line.

read :h :t for details, you may want to know the powerful :h range as well.

another advantage of :t instead of y/Y is, you keep " register untouched.

Upvotes: 12

Peter Rincker
Peter Rincker

Reputation: 45107

The many ways to yank text in Vim

  • :copy or :t command can copy a line. e.g. :42t .
  • :t can take ranges w/ a search pattern. e.g. :?foo?t.
  • Use :yank to yank a line. e.g. :43y
  • Yank/copy multiple lines with :global command. e.g. :g/foo/y A
  • Drop a mark and then search or go to link you want to yank then jump back to the mark. e.g. ma?foo<cr>yy`ap
  • Use <c-o> similar to using marks to jump back.
  • Use g; to move to older positions in the change list. (Similar to marks)

For more help see:

:h :t
:h range
:h :y
:h m
:h g;
:h ctrl-o

Upvotes: 5

pstrjds
pstrjds

Reputation: 17428

You can use this command

:x,xy

That will yank line 'x' without moving your cursor and then you can just paste with p

EDIT

You can shorten the command to

:xy

That will grab line 'x'. If you want a range of lines you could do this:

:x,x+10y

That will yank lines x - (x+10)

Upvotes: 4

Idan Arye
Idan Arye

Reputation: 12603

You can use the getline() function to read the line and the append() function to write it:

call append('.',getline('42'))

You can bundle it to a command if you want:

command! -nargs=1 FetchLine call append('.',getline(<q-args>))
FetchLine 42

Upvotes: 0

Related Questions