Home Explore Blog CI



neovim

10th chunk of `runtime/doc/map.txt`
73126a2041e60a725ebf0f4e8eaab9c4052274b2a52c85f40000000100000fa1
 an
underscore.

							*map-<SID>*
In a script the special key name "<SID>" can be used to define a mapping
that's local to the script.  See |<SID>| for details.

							*<Plug>*
The special key name "<Plug>" can be used for an internal mapping, which is
not to be matched with any key sequence.  This is useful in plugins
|using-<Plug>|.

							*<MouseMove>*
The special key name "<MouseMove>" can be used to handle mouse movement.  It
needs to be enabled with 'mousemoveevent'.
The |getmousepos()| function can be used to obtain the mouse position.

							*<Char>* *<Char->*
To map a character by its decimal, octal or hexadecimal number the <Char>
construct can be used:
	<Char-123>	character 123
	<Char-033>	character 27
	<Char-0x7f>	character 127
	<S-Char-114>    character 114 ('r') shifted ('R')
This is useful to specify a (multibyte) character in a 'keymap' file.
Upper and lowercase differences are ignored.

							*map-comments*
It is not possible to put a comment after these commands, because the `"`
character is considered to be part of the {lhs} or {rhs}. However, one can
use `|"`, since this starts a new, empty command with a comment.

							*map_bar* *map-bar*
Since the '|' character is used to separate a map command from the next
command, you will have to do something special to include  a '|' in {rhs}.
There are three methods:
   use	     works when			   example	~
   <Bar>     always			   :map _l :!ls <Bar> more^M
   \|	     'b' is not in 'cpoptions'	   :map _l :!ls \| more^M
   ^V|	     always			   :map _l :!ls ^V| more^M

(here ^V stands for CTRL-V; to get one CTRL-V you have to type it twice; you
cannot use the <> notation "<C-V>" here).

All three work when you use the default setting for 'cpoptions'.

When 'b' is present in 'cpoptions', "\|" will be recognized as a mapping
ending in a '\' and then another command.  This is Vi compatible, but
illogical when compared to other commands.

						*map_return* *map-return*
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 <CR> is recommended for
this (see |<>|).  Example: >
   :map  _ls  :!ls -l %:S<CR>:echo "the end"<CR>

To avoid mapping of the characters you type in insert or Command-line mode,
type a CTRL-V first.
							*map-error*
Note that when an error is encountered (that causes an error message or might
cause a beep) the rest of the mapping is not executed.  This is Vi-compatible.

Note that the second character (argument) of the commands @zZtTfF[]rm'`"v
and CTRL-X is not mapped.  This was done to be able to use all the named
registers and marks, even when the command with the same name has been
mapped.


1.7 WHAT KEYS TO MAP					*map-which-keys*

If you are going to map something, you will need to choose which key(s) to use
for the {lhs}.  You will have to avoid keys that are used for Vim commands,
otherwise you would not be able to use those commands anymore.  Here are a few
suggestions:
- Function keys <F2>, <F3>, etc..  Also the shifted function keys <S-F1>,
  <S-F2>, etc.  Note that <F1> is already used for the help command.
- Meta-keys (with the ALT key pressed).  Depending on your keyboard accented
  characters may be used as well. |:map-alt-keys|
- Use the '_' or ',' character and then any other character.  The "_" and ","
  commands do exist in Vim (see |_| and |,|), but you probably never use them.
- Use a key that is a synonym for another command.  For example: CTRL-P and
  CTRL-N.  Use an extra character to allow more mappings.
- The key defined by <Leader> and one or more other keys.  This is especially
  useful in scripts. |mapleader|

See the file "index" for keys that are not used and thus can be mapped without
losing any builtin function.  You can also use ":help {key}^D" to find out if
a key is used for some command.  ({key} is the specific key you want to find
out about, ^D is CTRL-D).


1.8 EXAMPLES						*map-examples*

A few examples (as you type them: for "<CR>"

Title: Advanced Vim Mapping: <SID>, <Plug>, <MouseMove>, <Char>, Comments, and Special Characters
Summary
This section details advanced Vim mapping techniques, including using `<SID>` for script-local mappings, `<Plug>` for internal mappings, `<MouseMove>` for handling mouse movement, and `<Char>` for mapping characters by their numerical value. It also covers how to handle comments in mapping commands using `|"`, and how to include the '|' character in {rhs} using `<Bar>`, `\|`, or CTRL-V. It explains how to terminate Ex commands in mappings with `<CR>` and notes that errors halt mapping execution. Finally, it provides advice on choosing keys for mappings to avoid conflicts and offers mapping examples.