Paste in vim

Paste in vim DEFAULT

In this 5 minutes of Vim goodness we’ll learn how to effectively copy, cut and paste things in Vim by taking advantage of Vim’s registers and a cool plugin. Here we go!

Copy and paste. Doesn’t sound like much excitement, does it? You are probably accustomed to use your mouse to perform some text selection, copy or cut it and then paste it somewhere else. And that is it. Not so much to be excited about.

Vim spices up copying, cutting and pasting in a couple of ways:

  1. It gives you new shiny operators and commands you can use in combination with all the motions you’ve learn thus far
  2. It provides a handful of registers where you can save stuff for later pasting which can enable interesting workflows

The two main commands for copying and pasting are and . *Why and not for copy, you may wonder?* Well, if you are familiar with Vim you may know that is already taken, it is the change command. And thus, the vi engineers had to come up with a suitable way to describe copying and settled on the colourful name of yank (because engineers are far more playful than one would think at first sight). So in Vim you don’t copy stuff, you yank it (great naming… So visceral). stands for put and therefore in Vim you yank some text from somwhere and put it some place else. If you’re accustomed to think of in terms of pasting then feel free to use whichever mnemonic makes you happy.

From now on, instead of copy I'll say **yank** so you get accustomed to it and can easily connect it in your brain and muscle memory to the letter . Yank! Yank! Yank!

is an operator. You can combine it with any of the motions and text-objects we’ve learned to yank stuff to your heart’s content:

  • yanks a letter,
  • yanks a word,
  • yanks a sentence
  • yanks everything within and so on…

If you double as in you get a linewise operator like and and yank a whole line. The command also yanks a complete line.

In order to paste things you use the command and its variants:

  • pastes something after the cursor
  • pastes something before the cursor
  • same as but puts the cursor after the pasted selection
  • same as and puts the cursor after the pasted selection

Pasting in Vim is kind of special and the behavior of and depend on whether you’ve yanked characters or lines. If you’ve yanked characters then pasting will put those characters after or before the cursor (no surprises there). If you’ve yanked lines, however, pasting will put those lines after or before the line where the cursor is resting on. This behavior may sound weird at first but it makes a lot of sense in practice.

Imagine that you are contemplating this powerful extract from an ancient text:

And you want to add more intensity to this passage you may decide to yank the particle and sprinkle it here and there:

Start by jumping to the the particle with :

Then yank the word with , jump to the next location were to put the with and paste with :

The jump to the next location again with and type to repeat the last change:

Want to duplicate a line instead? It is as easy as typing . Imagine that you have an array literal in JavaScript and it’s filled with magical items of wonder:

And now you want to add some more items to this chest. You can use any of the existing items as a template and type to duplicate it:

Then type to change its name to something else:

Want to n-plicate a line? (Yes, I’m pretty sure that’s a real word) It is as simple as typing . Yes! Counts also work with yank and pasting because they’re just commands! Let’s retry the example above but this time type :

Wow! Impressive, isn’t it?

Ok. So if , the yank command, copies stuff… How do you cut things in Vim? Aha! Here comes a surprise!

Cutting Stuff In Vim

You may be familiar with the (delete) and (change) commands in Vim? As their name indicates they let you delete and change text in Vim. A lesser know fact is that, in addition to deleting and changing text, they also cut it.

Imagine that in addition to the we had earlier we now have a brave adventurer ready to explore the world and confront its perils. Sadly, our adventurer has little and lacks many of the tools of the adventuring trade she’ll need to survive:

Let’s give her some help and move the well kept sword from the chest into her inventory:

We type to jump two lines down and delete (and cut) our sword:

Then to move our cursor on to of the in in :

And now we type and we’re ready for adventure:

Now you can save the file and if you have an autoformatter setup it’ll fix your indentation or you can type to manually format that line.

What more can you do with cutting and pasting in Vim? Have you ever made a typo and need to swap two characters? Type (or ). Want to swap couple of lines? Type . Want to swap a couple of paragraphs? Type .

Excellent! So now you’ve boosted your knowledge with yanking, cutting and pasting in Vim. But there’s yet one crucial element left that we haven’t even touched on yet: The mighty registers.

A wonderful way to illustrate the impact of registers is swapping two values within Vim. I do some variant of this task incredibly often.

Imagine that you have a couple of CSS variables that represent a couple of colors in a color theme of a beautiful website you’ve just designed:

You quickly notice the colors are wrong. You’ve mixed them. The red is the green and the green is the red. Oh no! What to do!?

So you try swapping them using what we’ve just learned. You type and put the cursor on top of the hexadecimal value:

You cut it with :

Type to move to the next hex value, delete it with and try to paste the red with , but…

What!? That is so not what I expected to happen. What did I do wrong?

You may have noticed the issue with this swap as you were following the example but if you haven’t I will tell you: The problem is that delete also cuts. When we deleted the hexadecimal value for the green color in the last step we literally overwrote the red hexadecimal value. That’s why when we typed at the end the pasted characters where and not as we initially expected.

But what did we overwrite exactly? Most systems have the concept of a clipboard, which is a place where you put the stuff that you copy and cut. Well Vim doesn’t have a clipboard, Vim has registers.

Vim’s Registers

Vim registers are the equivalent of a clipboard, but since you have lots of them, they’re that much powerful.

When we use commands like , , and we’re interacting with Vim’s unnamed register. You aren’t limited to that one though, you have 26 named registers, one for each letter of the alphabet, that you are free to use as you see fit.

The way that you explicitly access a given register is by prefixing a command with . So:

  • yanks a line into the register
  • cuts a line into the register
  • pastes from the register

Using the same pattern we can access the mysterious **unnamed register** which does have a name after all. Its name is and you could replace for if you had a fancy for writing more than you need to. But we won't do that.

Using the lowercase name of a named register overwrites its contents, whereas if we use the capitalized version of that name we will append whatever we yank or cut into the register (this can be really useful when we want to collect text into a register for later pasting).

Using named registers offers one way to solve the problem that ailed us earlier when we were swapping colors. Instead of using the unnamed register alone we could’ve used it in combination with the register:

  1. to move the cursor to the first hex value
  2. to cut the green color value in the unnamed register
  3. to move to the second hex value
  4. to cut it into the named register
  5. pastes the first hex value in the write place
  6. to go up
  7. which now pastes from the register and we’re done

Excellent! If you ever lose track about which register you have put stuff in, you can rely on the (or ) command. will print the value of all registers into a buffer. If you’re only interested in the contents of a particular register you can also specify it as an argument. For instance, typing after the previous example would result in the following:

Another useful way to interact with named registers is by taking advantage of the fact that capitalized named registers append to the register instead of replacing its contents. For instance, we could build an outline of a markdown document by continously appending headers to the register:

  • to jump to the next header
  • to copy the header into the register
  • to jump to the next header
  • to append the header to the contents of the register
  • then and until you’ve gathered all the headers you want
  • to paste the outline of the mardown document

In addition to the named and unnamed registers there are more registers that will be useful from time to time: The yank register (), the delete registers () and the black hole register ().

The yank register holds the last bit of text you yanked. That is, it only stores text you have yanked with the command and lives completely unperturbed by whatever happens with cutting operations like or . This can be really useful if you want to rename a variable or other pieces of text. Using the yank register offers yet another alternative way to swap values.

The delete registers are nine registers that contain the last 9 pieces of text you cut or deleted. They work as a queue where every time you cut something it gets stuck in the queue at position , whatever was in is pushed to and so on. The delete register can be really useful when you happen to delete something in the past and you want to bring it back (in fact, it just saved me from losing a beautifully written parapraph). Just like the named and yank registers, you can take advantage of delete registers as an alternative way to swap values.

The black hole register has a fitting name because it truly allows you to delete text into oblivion. A nice way to avoid overwriting the unnamed register is to prefix the delete operator with the black hole register: For instance, type to blast a word into oblivion for ever and ever.

For a list of all registers available in Vim and how you can use them take a look at .

Copy and Pasting In and Outside Of Vim

Everything we’ve discussed thus far only applies to the world of Vim. All the commands and registers that we’ve seen allow you to yank, cut and paste text only within the confines of Vim. What happens when you want to copy to or paste from outside of Vim? For instance, when you find a wonderful piece of code on StackOverflow and want to try it in a program?

There’s two registers that work as an interface between Vim and the outside world: The and the registers.

  • You can use the register to interact with the system clipboard in Windows, Mac and Linux
  • You can use the register to interact with the primary clipboard in Linux, and also the system clipboard in Windows and Mac (since these two only have the single clipboard)

One thing that I find super convenient and that I’d advise you to do is to have your system clipboard use the unnamed register. That way you can seamlessly copy and paste between Vim and the rest of your computer, taking advantage of the fastest commands , , and , and avoiding the need to specify the and registers.

If you are using Neovim you can enable this behavior in your vimrc like so:

Likewise in traditional Vim:

Take a look at for more information.

Pasting in Insert mode

All of this article has focused on how you can copy and paste things from within Normal mode. Sometimes however, it can be helpful to paste things within Insert mode. Earlier you learned how you can paste using the command but that won’t do in Insert mode (it would just insert the letter ). What to do? Well, in some instances (f.i. gvim and mvim) you may be able to use your system copy/paste key bindings, but you can always rely on to paste text from any given :

  • pastes the contents of the register
  • pastes the contents of the unnamed register
  • pastes the contents of the yank register.

And yes, you’ve guessed it right, the stands for Register. Use that as a mnemnonic and you’ll never forget how to paste things in Insert mode.

A Really Cool Plugin To Simplify Working With Registers in Vim

Before we part here is a really cool plugin that helps you work with register in Vim: vim-peekaboo. This plugin extends and in normal mode and in insert mode so you can see the contents of the registers as you are about to perform a copying, cutting or pasting operation:

A Vim user takes advantage of the peekaboo plugin to inspect what's inside their registers before pasting

Cool right?

And that’s all for today! Take care and have a wonderful day!

Spread The Word. Share this article!

Wop! Want to Reach Out?

If you have any question or comments about the article just reach out on the twitterverse! My DMs are open and I'm always happy to help out and answer questions.

Tagged as...


Would you like to receive more articles like this one on programming, web development, JavaScript, Angular, developer productivity, tools, UX and even exclusive content like free versions of my books in your mailbox? Then sign up to my super duper awesome inner circle.

Sign Me Up! Sours:

Here is how to cut-and-paste or copy-and-paste text using a visual selection in Vim. See Cut/copy and paste using visual selection for the main article.

Cut and paste:

  1. Position the cursor where you want to begin cutting.
  2. Press to select characters, or uppercase to select whole lines, or to select rectangular blocks (use if is mapped to paste).
  3. Move the cursor to the end of what you want to cut.
  4. Press to cut (or to copy).
  5. Move to where you would like to paste.
  6. Press to paste before the cursor, or to paste after.

Copy and paste is performed with the same steps except for step 4 where you would press instead of :

  • stands for delete in Vim, which in other editors is usually called cut
  • stands for yank in Vim, which in other editors is usually called copy

Copying and cutting in normal mode[]

In normal mode, one can copy (yank) with , where is a Vim motion. For example, copies to the beginning of the next word. Other helpful yanking commands include:

  • or – yank the current line, including the newline character at the end of the line
  • – yank to the end of the current line (but don't yank the newline character); note that many people like to remap to in line with and
  • – yank the current word (excluding surrounding whitespace)
  • – yank the current word (including leading or trailing whitespace)
  • – yank from the current cursor position up to and before the character (til )
  • – yank from the current cursor position up to and including the character (find )

Cutting can be done using , including:

  • - cut the current line, including the newline character at the end of the line

To copy into a register, one can use immediately before one of the above commands to copy into the register . See pasting registers for more information on register syntax.

Pasting in normal mode[]

In normal mode, one can use to paste after the cursor, or to paste before the cursor.

The variants and move the cursor after the pasted text, instead of leaving the cursor stationary.

To select a register from which to paste, one can use to paste from the register . See pasting registers.

Pasting in insert mode[]

The contents of a register can be pasted while in insert mode: type Ctrl-r then a character that identifies the register. For example, Ctrl-r then pastes from the default register, and Ctrl-r then pastes from register zero which holds the text that was most recently yanked (copied). See pasting registers.

Copying and cutting in command-line mode[]

Command-line mode occurs after typing to enter a command. By default, while in the command line, typing Ctrl-f opens the command-line window where commands can be edited using normal mode. For example, part of one command can be copied then pasted into another command. See using command-line history.

Pasting in command-line mode[]

There are two approaches to pasting in command-line mode. The first is to open the command-line window with Ctrl-f, then use normal-mode commands to paste. See the previous section.

The second approach is to type Ctrl-r then a character to paste the contents of the register identified by the character. See Pasting in insert mode above.

Copy, cut, and paste from the system clipboard[]

Main article: Accessing the system clipboard

Unlike most text editors, Vim distinguishes between its own registers and the system clipboard. By default, Vim copies to, cuts to, and pastes from its own default register, called the unnamed register (, also called quotequote) instead of the system clipboard.

Assuming Vim was compiled with clipboard access, it is possible to access the or registers, which can modify the system clipboard. In this case, one can copy with e.g. in visual mode, or in normal mode, and paste with e.g. .

If your installation of Vim was not compiled with clipboard support, you must either install a package that has clipboard support, or use an external command such as xclip as an intermediary. See Accessing the system clipboard for detailed information.

Multiple copying[]

Main article: Pasting registers.

Deleted or copied text is placed in the unnamed register. If wanted, a register can be specified so the text is also copied to the named register. A register is a location in Vim's memory identified with a single letter. A double quote character is used to specify that the next letter typed is the name of a register.

For example, you could select the text then type to copy "hello" to the register. Then you could select the text and type to copy "world" to the register. After moving the cursor to another location, the text could be pasted: type to paste "hello" or to paste "world". These commands paste the text after the cursor. Alternatively, type or to paste before the cursor.

Windows clipboard[]

When using Vim under Windows, the clipboard can be accessed with the following:

  • In step 4, press Shift+Delete to cut or Ctrl+Insert to copy.
  • In step 6, press Shift+Insert to paste.

Different instances[]

How does one copy and paste between two instances of Vim on different Linux consoles?

After copying text, open a new buffer for a new file:

:e ~/dummy
  • Paste the text to the new buffer.
  • Write the new buffer .
  • Switch to the previous buffer to release *.swp.
  • Now switch to the other console.
  • Put the cursor at the desired place.
  • Read the dummy file

Increasing the buffer size[]

By default, only the first 50 lines in a register are saved, and a register is not saved if it contains more than 10 kilobytes. :help 'viminfo'

In the example below, the first line displays the current settings, while the second line sets:

  • Marks will be remembered for the last 100 edited files.
  • Limits the number of lines saved for each register to 100 lines; if a register contains more than 100 lines, only the first 100 lines are saved.
  • Limits the maximum size of each item to 20 kilobytes; if a register contains more than 20 kilobytes, the register is not saved.
  • Disables search highlighting when Vim starts.
:set viminfo? :set viminfo='100,<100,s20,h

See also[]


  1. Craftsman screw organizer
  2. Dr lisa nocera
  3. Thunderbolt port
  4. Muskegon breaking news
  5. Alphabet page border

How to copy paste contents in the vi editor

First, check if your vim has clipboard support installed

If it returns 1 you do have clipboard support

To copy to the clipboard you have to either select your target, let's say a paragraph and then , which means to the register copy the selected portion or you can simply type in normal mode: , which means: to the register copy inner paragraph.

To paste from the clipboard in normal mode you can:

On insert mode you can simply . Tha will insert your clipboard content and preserve all indentation as it is on the clipboard.

If you want to copy the whole buffer to the clipboard you can:

To copy the last command to the clipboard:

To copy the last search to the clipboard:

to copy from the mark "a" until the mark "b" to the clipboard:

To test any function that is on the clipboard you can

To see what is on the clipboard:

To copy all lines that have "pattern" to the clipboard you can:

Copy and Paste to/from Vim from/to Other Programs!


Vim is a commonly used open-source text editor installed by default on most Unix distributions. You can use the text editor in two modes, from a command-line interface or as an independent application in a GUI.

While working in Vim, copying, cutting and pasting text are frequently used shortcuts.

In this tutorial learn how to copy, cut and paste in Vi / Vim editor.

guide on how to copy and paste using Vim

Copy, Cut and Paste in Normal Mode

Before you start, make sure you are in normal mode (text editing/command mode). The best way to do so is to press Esc. This mode allows you to move through the text easily.

example of a Vim text editor in normal mode

Copying in Vim

Copying text in Vim is also referred to as yanking. Use the key on the keyboard when performing this operation.

There are a number of commands, mainly differing on the amount of text you want to copy.

Once in normal mode, move the cursor to the needed place and use the appropriate command.

  • To copy an entire line, place the cursor at the beginning of the line and type:
  • To copy three (3) lines, move the cursor from where you want to begin copying and type:
  • To copy a word with its trailing whitespace, copy the cursor at the beginning of the word and type:
  • To copy a word without its trailing white-space, navigate the cursor at the beginning of the word and type:
  • To copy everything right of the cursor to the end of the line, use the command:
  • To copy everything left of the cursor to the start of the line, type:
  • To copy everything between the cursor and a specified character in the line, use the command:

The command stands for “yank till x”. Replace x with the character to which you want to copy to. The character x will not be included.

  • To copy everything between the cursor and a specified character in the line (including that character), use the command:

This instructs Vim to “find x”.

Cutting in Vim

Cutting text is referred to as deleting in Vim. Use the key when performing this operation.

If you are using Vim in normal mode, you can easily cut or delete text using the command. Here are some ways you can cut content:

  • To cut the entire line in which the cursor is located type:
  • To cut three (3) lines, starting from the one where the cursor is located use:
  • To cut everything right of the cursor to the end of the line use the command:

Pasting in Vim

Once you have selected text in Vim, no matter whether it is using the or the command, you can paste it in the wanted location.

In Vim terminology, pasting is called putting and the function is utilized with the command.

You can paste (or put) text by moving the cursor to the wanted position and pressing:

Using this command pastes the selected text after the cursor.

To add text before the cursor, type the capitalized command instead:

Copy, Cut and Paste in Visual Mode

Alternatively, you can copy and edit text using the visual selection feature. This mode allows you to select text by navigating around.

Use Esc to exit out of the previously used mode and enable visual selection by pressing:

  • (lowercase) to start selecting individual characters
  • (uppercase) to select the entire line
  • to select by block

After you have selected the wanted text you can press:

  • to yank (copy) the content
  • to delete (cut) the content
  • to put (paste) the content
Vim copying, cutting and pasting in visual mode

Once you have edited in Vim, make sure to save the file before you exit.


Now you know how to copy, cut and paste in Vim. You may often find yourself needing to make configuration changes to your packages. Most of these can quickly be done in Vim using cut & copy paste.

Next, you can explore the many options VIM to offer, such as Vim color schemes.

Was this article helpful?



Vim paste in

How to make vim paste from (and copy to) system's clipboard?

The and registers are for the system's clipboard (). Depending on your system, they may do different things. For instance, on systems that don't use X11 like OSX or Windows, the register is used to read and write to the system clipboard. On X11 systems both registers can be used. See for more details, but basically the is analogous to X11's selection (which usually copies things you select with the mouse and pastes with the middle mouse button) and is analogous to X11's selection (which is the clipboard proper).

If all that went over your head, try using or to copy a line to your system's clipboard. Assuming you have the appropriate compile options, one or the other should work.

You might like to remap this to something more convenient for you. For example, you could put in your so that you can visually select and press + to yank to your system's clipboard.

Be aware that copying/pasting from the system clipboard will not work if returns 0. In this case, vim is not compiled with the feature and you'll have to install a different version or recompile it. Some linux distros supply a minimal vim installation by default, but if you install the or package you can get the extra features nonetheless.

You also may want to have a look at the option described in . In this case you can or to make all yanking/deleting operations automatically copy to the system clipboard. This could be an inconvenience in some cases where you are storing something else in the clipboard as it will override it.

To paste you can use or (again, depending on your system and/or desired selection) or you can map these to something else. I type them explicitly, but I often find myself in insert mode. If you're in insert mode you can still paste them with proper indentation by using or . See .

It's also worth mentioning vim's option (). This puts vim into a special "paste mode" that disables several other options, allowing you to easily paste into vim using your terminal emulator's or multiplexer's familiar paste shortcut. (Simply type to enable it, paste your content and then type to disable it.) Alternatively, you can use the option to set a keycode that toggles the mode ().

I recommend using registers instead of these options, but if they are still too scary, this can be a convenient workaround while you're perfecting your vim chops.

See for more detailed information.

Vim Tutorial - Copy Cut and Paste

As a command-line text editor vi/vim provides the keys in order to select, copy, cut, and paste the text. For novice users using keys to select, copy, cut, and paste a text or content is very unfamiliar as most of the users use GUI-based text editor which provides cursor and menus for these operations. In this tutorial, we will examine different ways to select, copy, and paste text in vi/vim text editor.

Select Content

In order to copy or cut we have to select a text area in the vi/vim editor. The current position of the cursor is the start of the select operation. So before starting select move the cursor to the relevant position. Use the following table of keys for a different selection.

vSelect character by character
VSelect the whole line
CTRL+vSelect rectangular blocks

Move the cursor to the end of what you want to copy of cut.

Copy Specified Contet

You have two options after selecting a text or content. You can copy or cut. If you want to copy the content you should use the yy . The y key stands for the yank in vi/vim and used to copy the selected context. You can use the following keys to copy. This operation is also called vim yanking or vim yank.

yyCopy the current line
y$Copy from the current location to the end of the current line
yiwCopy current word
yawCopy current word with leading and trailing spaces

Cut Specified Content

The second operation is the cut operation which is different from the copy. The cut operation is called delete in vi/vim that executed with the dd keys. The cut operation first deletes selected content and then paste the deleted content to the specified position. You can use the following table in order to cut.

ddCut the current line
3ddCut 3 lines starting from the current line
d$Cut from current cursor position to the end of file
dwCut current word


The copied or cut content can be pasted into the current cursor location by using the p key. The p key will paste the yanked lines into the current location which will complete the copy and paste or cut and paste operation. This is paste key is very similar to the GUI-based text editors or windows right-click paste from clipboard because the content will be pasted from the memory which acts like a clipboard. But keep in mind that this will not paste from the GUI desktop of the Linux operating system. You should use your terminal paste shortcut after changing the Vim/Vi into insert mode. The terminal paste keys are generally CTRL+SHIFT+v .

As a command line and command based text editor Vim or Vi do not provides the right click and paste function. All the paste operation will be done via commands and keys. But GVIM is an exception which is the graphical variant of the Vim and provides some GUI tools and mouse clicks to paste the copied or cut content.

Duplicate Current Line

If you need to duplicate the current line where the cursor is located with simple keystrokes use the following ESC+yy+p keys.

Copy and Paste Specified Line Range

You may need to copy and paste for the specified line range in a fast way just pressing some keystrokes. The line range can be specified from the current cursor location to the down. The ESC+y5y+p keys will copy 5 lines from the current location to down and paste.

Categories Bash, CentOS, Debian, Mint, Ubuntu, Vi/VimTags vi, vim copy, vim cut, vim pasteSours:

You will also be interested:

He did not sit down with his own, but began to pace, pretending to examine the tapestries on the walls. At the same time, he had to cover his groin. It serves him right.

4853 4854 4855 4856 4857