Copy and paste text with vi or vim
The ability to duplicate text in an editor can be handy. vi and vim have several useful copy and paste commands.
The command ‘Y’ or ‘yy’ copies (yanks) one or more lines. To copy one line, two lines, 10 lines, and all lines to the end of the file, respectively:
Y
2Y
10Y
yG
To paste the text contained in the buffer above (uppercase P) or below the current cursor position (lowercase p), respectively:
P
p
It is also possible to yank text within a line. The following commands yank text from the current cursor position to the end of the word and the end of the line, respectively:
yw
y$
The same commands paste the text within a line. Lower case p pastes after the cursor position and upper case P pastes before.
Paste will also work with deleted text, either lines or parts of lines. Be careful not to execute any other commands prior to pasting as this will empty the buffer.







john_doe said on November 11, 2008
I need to yank x amount of lines from the middle of the file. Am I now suppose to count the amount of lines or what?
Kesavan said on November 18, 2008
Good one.,
fuzzy said on November 19, 2008
Nope – just use m to mark the start, with an arbitrary buffer name (so you might type mx). Move your cursor down to where you want to stop copying, and type y’x (or d’x if you’re cutting and pasting). Then move the cursor to the point where you want to paste, and type p. Magic.
You might find something like this helpful as a reference: http://www.onlamp.com/pub/a/bsd/2001/10/25/FreeBSD_Basics.html?page=1
ddreggors said on November 26, 2008
Another nice trick is to use Visual Mode…
go to the line you wish to start yanking/cutting
CTRL-V (enable visual mode)
SHIFT-$ (select to end of line)
(select the lines you wish to yank/cut)
d (cut lines) or y (yank/copy)
now just use ‘p’ or ‘P’ as needed to paste below or above cursor!
This is the same as fuzzy’s except it allows you to “SEE” what you are yanking.
ddreggors said on November 26, 2008
Sorry one change…
CTRL-V is Visual Block Mode
simply use the lowercase “v” to enter visual mode and no need to do the “SHIFT-$” (should be SHIFT-4 or $) as mentioned above. So that process now beomes:
go to the line you wish to start yanking/cutting
v (enable visual mode)
(select the lines you wish to yank/cut)
or
(select characters/words in a line)
d (cut lines) or y (yank/copy)
now just use ‘p’ or ‘P’ as needed to paste below or above cursor!
saravanan said on December 11, 2008
How to copy the portion of a file to another file in the same folder in unix?
Maria said on February 18, 2009
Perfect :)
Ronni said on April 11, 2009
Nice explanation
Chrissy said on June 3, 2009
I realize your post is from 5 months ago from when I’m posting this, saravanan, but for anyone else who may read this:
You have several options that I know of–and I’m not even a vim master. Just for clarity’s sake, fileA refers to the file you want to copy *from*, and fileB refers to the file you want to copy *to*.
1. You could open fileB, execute the command “:r fileA” (which would copy all of fileA into the open file), and then remove the portions you don’t want.
2. You could open fileA, execute the command “:split fileB” (which would open fileB to the side of fileA), select the lines you wish to copy from fileA with the combination Shift+V and up/down arrow or j/k, press “y” to yank the lines, switch over to fileB with Ctrl+W Ctrl+W, and then paste the lines with “p”.
3. Open fileA, select the lines you wish to copy, yank the lines with “”by” (note that’s a double-quotation mark in front of the “b”, and that the “b” could be any letter of the alphabet), open fileB, and finally paste the lines with “”bp” (where “b” is the same letter you used to yank).
Note that some of these methods may differ, depending on your version of vim. And by the by, the files don’t have to be in the same folder for these options to work; you simply specify the path to the files (i.e., “:split /path/to/fileB”).
Anonymous said on March 26, 2010
this is my first time using the vi editor.Can anyone show me how to create user account in solaris 10.
Me said on September 2, 2010
It’s raining. I will eat a horse for my breakfast..
Website Design Montreal said on November 5, 2010
Thank you for all the comments. I found what I was look for at O’reilly ’s onlamp website (Thanks to Fuzzy)
For those of you who are still looking for me this worked
:100,125w newfile
To see the results, I can open up newfile like so:
:e newfile
Ocean Wy said on November 17, 2010
if I yanked something wrong and I need to cancel it, what should I do?
thanks
Sutourdot said on November 26, 2010
hi …
i eed information abou copying the text of pdf /msword file as following.
there atre 5 lines . i want to copy 1st and 5 th line at a time with out continuety.
please message me to sutourdot@yahoo.co.in
David said on December 12, 2010
How do you copy part of a line and paste it into another line at the cursor position (not above or below the current line)?
tg said on December 14, 2010
@chrissy – nice! thanks
Atrimodi said on December 29, 2010
copy and paste line :
command is : yyp
Patrick Cahill said on December 30, 2010
Here is how the FTP sequence transpires:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:>ftp 158.96.235.130
Connected to 158.96.235.130.
220-QTCP at DOMINONB.
220 Connection will close if idle more than 30 minutes.
User (158.96.235.130:(none)): xxxxxxx
331 Enter password.
Password:
230 xxxxxxx logged on.
ftp> bin
200 Representation type is binary IMAGE.
ftp> put “C:Documents and SettingsxxxxxxDesktopmysqlinst.savf”
200 PORT subcommand request successful.
150 Sending file to member SAVF in file MYSQLINST in library QGPL.
> Netout :Software caused connection abort
426-Cannot write to member SAVF in file MYSQLINST in library QGPL.
426 Data transfer ended.
ftp: 2293725 bytes sent in 52.08Seconds 44.04Kbytes/sec.
ftp>
I have done this file transfer to many other machines but this one is giving me trouble.
Clint O Baxley said on February 10, 2011
Windows in a vim discussion. LOL my sides hurt.
Guest said on April 22, 2011
Copy until the end of a line:
y$
Copy to the beginning of a line:
y^
Copy following 4 words:
y4w
Mahesh said on June 12, 2011
An useful post :)
Trunghuynh Bk said on August 16, 2011
can’t anyone show me the way to type the linux path in VI editor.
Do we have the functionality of TAB key in VI editor
shareef said on January 9, 2012
Hi,
i am having text in a file liike
abc
xyz
fgh
jkl
i need to print as
abc abc
xyz xyz
fgh fgh
jkl jkl
in same file…can anyone tell me the way to do that (in vi/vim/unix..what ever)..thanks in advance…
Thanks…
Shareef Shiek