I see <cr>
s a lot in vim mappings, but what does it do?
5 Answers
:help key-notation
says:
notation meaning equivalent decimal value(s)
-----------------------------------------------------------------------
<CR> carriage return CTRL-M 13 *carriage-return*
<Return> same as <CR> *<Return>*
<Enter> same as <CR> *<Enter>*
Mappings often involve Ex commands and you must press <CR>
to execute them so it's included in the mapping.
![](../../users/profiles/546861.webp)
- 158,436
- 18
- 236
- 264
-
Upvoted for showing how to get to the information! That's the way to learn two things at once :-) – Carles Jove i Buxeda Jan 08 '20 at 07:13
Why <special keys>
?
While you can use literal keys in mapping definitions (the Enter key would appear as ^M
, or even just as an additional new line, depending on the settings), Vim provides a special key notation for key (combinations), so that it is easier to define (you don't have to use i_CTRL-V
to literally insert the special character) and understand (<A-a>
better expresses the intention than the equivalent á
) the mappings.
See :help key-notation
for a list and explanation.
Why <CR>
?
As many mappings invoke Ex commands (e.g. :w
) and therefore have to switch from normal to command-line mode, they have to conclude the command with <Enter>
(or <CR>
), just as you would when manually typing the command.
![](../../users/profiles/813602.webp)
- 154,018
- 15
- 205
- 275
The <CR>
in vim
mappings is the carriage return usually the Enter on your keyboard.
![](../../users/profiles/1471829.webp)
- 11,252
- 4
- 43
- 57
<CR>
in a mapping corresponds to the Enter key just like a
in a mapping corresponds to the A key. Ley's say you have this mapping
:map <f8> :wq<cr>
This will map F8 to the key sequence :WQEnter (which would save the current buffer and quit).
![](../../users/profiles/845034.webp)
- 13,255
- 2
- 36
- 69
It's basically a means to say "this is the end", see map:
When you have a mapping that contains an Ex command, you need to put a line terminator after it to have it executed. The use of is recommended for this. Example:
:map _ls :!ls -l %<CR>:echo "the end"<CR>
also,
<CR> [count] lines downward, on the first non-blank character |linewise|.
![](../../users/profiles/1999456.webp)
- 11,183
- 6
- 34
- 46