What is the meaning of a <CR> at the end of some vim mappings?

VimMapping

Vim 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

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.

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 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|.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLuciaView Question on Stackoverflow
Solution 1 - VimromainlView Answer on Stackoverflow
Solution 2 - VimIngo KarkatView Answer on Stackoverflow
Solution 3 - VimAtropoView Answer on Stackoverflow
Solution 4 - VimsteffenView Answer on Stackoverflow
Solution 5 - VimLuciaView Answer on Stackoverflow