The ".
" command repeats the last change made in normal mode. For example, if you press dw
to delete a word, you can then press .
to delete another word (.
is dot, aka period or full stop).
The "@:
" command repeats the last command-line change (a command invoked with ":
", for example :s/old/new/
).
You can move the cursor before using either of the repeat commands.
Suppose you press dd
to delete a line. Next, you might move the cursor, then press 5.
(5
then dot). That will delete 5 lines.
In normal mode, press J
to join the next line onto the current line. Press .
to join more lines.
Or, you might use insert mode to type "hello
". Press Esc for normal mode, then move the cursor, and press .
to insert "hello " again.
Copy a word to multiple locations[]
Type yiw
to copy the current word. Move the cursor to a new location, then type ciw<C-R>0<Esc>
to change the word, replacing it with the copied text. After moving the cursor to a new location, press .
to repeat the operation (the current word will be replaced with the word that was originally copied). See replace a word with yanked text.
Copy a line to multiple locations[]
Move the cursor to the wanted line and press Y
to copy it. Move the cursor to a new location, then press p
to paste the line after the current line, or P
to paste before the current line. After moving the cursor to a new location, press .
to repeat the paste.
It is also possible to paste the copied line over the destination (replacing the current line). To do that once, copy the wanted line with Y
, then move to the destination, press V
to visually select the destination line, then p
to paste the copied line over the selected line.
A different procedure should be used if the replace operation needs to be repeated. Move the cursor to the wanted line and type 0y$
to copy the line, without the line ending (0
moves to the beginning of the line; y$
copies to the end of the line). Move the cursor to a new location, then type S<C-R>0<Esc>
(S
then Ctrl-R then 0
then Escape). After moving the cursor to a new location, press .
to repeat the operation (the current line will be replaced with the line that was originally copied).
Explanation: Pressing S
deletes all text from the current line (but not the line ending) and starts an insert operation. In insert mode, pressing Ctrl-R inserts the contents of a register. Register 0
(zero) contains the text that was copied with y$
.
See also[]
- Using command-line history
- Repeat command on each line in visual block
- Recording keys for repeated jobs
- Repeat last colon command
- Repeating an ex command on multiple blocks
- Repeat last command and put cursor at start of change
References[]
Comments[]
- plugin repeat.vim (repeat.vim) to repeat your own complex mappings and functions; see comments in script header for use
@@
to repeat last played macron
,N
,;
,,
to repeat searches&
to repeat substitution- i_CTRL-A also known as i_CTRL-R_.
- Undo and Redo