What is the meaning of a <CR> at the end of some vim mappings?
VimMappingVim Problem Overview
I see <cr>
s a lot in vim mappings, but what does it do?
Vim Solutions
Solution 1 - Vim
: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.
Solution 2 - Vim
<special keys>
?
Why 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.
<CR>
?
Why 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.
Solution 3 - Vim
The <CR>
in vim
mappings is the carriage return usually the Enter on your keyboard.
Solution 4 - Vim
<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).
Solution 5 - Vim
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 :map _ls :!ls -l %<CR>:echo "the end"<CR>
also,
<CR> [count] lines downward, on the first non-blank character |linewise|.