summaryrefslogtreecommitdiff
path: root/runtime/doc/map.txt
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc/map.txt')
-rw-r--r--runtime/doc/map.txt39
1 files changed, 26 insertions, 13 deletions
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index e099491ae..41b96151c 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt* For Vim version 7.1. Last change: 2007 May 11
+*map.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -266,12 +266,13 @@ as a special key.
1.3 MAPPING AND MODES *:map-modes*
+ *mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
There are five sets of mappings
- For Normal mode: When typing commands.
- For Visual mode: When typing commands while the Visual area is highlighted.
- For Operator-pending mode: When an operator is pending (after "d", "y", "c",
- etc.). Example: ":omap { w" makes "y{" work like "yw" and "d{" like "dw".
+ etc.). See below: |omap-info|.
- For Insert mode. These are also used in Replace mode.
- For Command-line mode: When entering a ":" or "/" command.
@@ -282,7 +283,6 @@ to type a count with a zero.
*map-overview* *map-modes*
Overview of which map command works in which mode:
- *mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
commands: modes: ~
Normal Visual+Select Operator-pending ~
:map :noremap :unmap :mapclear yes yes yes
@@ -318,6 +318,19 @@ Therefore the ":map" and ":map!" commands enter and display mappings for
several modes. In Vim you can use the ":nmap", ":vmap", ":omap", ":cmap" and
":imap" commands to enter mappings for each mode separately.
+ *omap-info*
+Operator-pending mappings can be used to define a movement command that can be
+used with any operator. Simple example: ":omap { w" makes "y{" work like "yw"
+and "d{" like "dw".
+
+To ignore the starting cursor position and select different text, you can have
+the omap start Visual mode to select the text to be operated upon. Example
+that operates on a function name in the current line: >
+ onoremap <silent> F :<C-U>normal! 0f(hviw<CR>
+The CTRL-U (<C-U>) is used to remove the range that Vim may insert. The
+Normal mode commands find the first '(' character and select the first word
+before it. That usually is the function name.
+
To enter a mapping for Normal and Visual mode, but not Operator-pending mode,
first define it for all three modes, then unmap it for Operator-pending mode:
:map xx something-difficult
@@ -473,7 +486,7 @@ scenario: >
:imap <M-C> foo
:set encoding=utf-8
The mapping for <M-C> is defined with the latin1 encoding, resulting in a 0xc3
-byte. If you type the character á (0xea <M-a>) in UTF-8 encoding this is the
+byte. If you type the character á (0xe1 <M-a>) in UTF-8 encoding this is the
two bytes 0xc3 0xa1. You don't want the 0xc3 byte to be mapped then,
otherwise it would be impossible to type the á character.
@@ -494,9 +507,9 @@ defined. Changing "mapleader" after that has no effect for already defined
mappings.
*<LocalLeader>* *maplocalleader*
-Just like <Leader>, except that it uses "maplocalleader" instead of
-"mapleader". <LocalLeader> is to be used for mappings which are local to a
-buffer. Example: >
+<LocalLeader> is just like <Leader>, except that it uses "maplocalleader"
+instead of "mapleader". <LocalLeader> is to be used for mappings which are
+local to a buffer. Example: >
:map <LocalLeader>q \DoItNow
<
In a global plugin <Leader> should be used and in a filetype plugin
@@ -1167,7 +1180,7 @@ defined, not where it is invoked! Example:
:source script1.vim
:let s:error = "Wrong!"
:Error s:error
-Executing script2.vim will result in "None" to be echoed. Not what you
+Executing script2.vim will result in "None" being echoed. Not what you
intended! Calling a function may be an alternative.
Completion behavior *:command-completion* *E179*
@@ -1203,7 +1216,7 @@ Custom completion *:command-completion-custom*
*E467* *E468*
It is possible to define customized completion schemes via the "custom,{func}"
or the "customlist,{func}" completion argument. The {func} part should be a
-function with the following prototype >
+function with the following signature: >
:function {func}(ArgLead, CmdLine, CursorPos)
@@ -1370,10 +1383,10 @@ This will invoke: >
:" A more substantial example
:function Allargs(command)
- : let i = 0
- : while i < argc()
- : if filereadable(argv(i))
- : execute "e " . argv(i)
+ : let i = 0
+ : while i < argc()
+ : if filereadable(argv(i))
+ : execute "e " . argv(i)
: execute a:command
: endif
: let i = i + 1