heading:Key{nbsp}mappings,{nbsp}abbreviations,{nbsp}and{nbsp}user-defined{nbsp}commands.[] section:Key{nbsp}mapping[key-mapping,mapping,macro] The key mapping commands can be used to either redefine the standard key bindings or define new ones. A mapping consists of a key, or sequence of keys, which are translated to a string of characters. Example: \{nbsp}[c]:map :echo new Date().toDateString()[c] will echo the current date to the command line when [m][m] is pressed. There are separate key mapping tables for each of the Normal, Insert, and Command-line modes. Please note that, like Vim and other applications, modifier mappings containing the Shift key are specified with a [m]S-[m] modifier. For example, [m][m] is exactly the same as [m][m], it represents holding the Control key and a lowercase [m]n[m]. In order to map the Control key with an uppercase [m]N[m], either [m][m] or [m][m] can be used. For numbers and punctuation characters that cannot change case, the [m]S-[m] is not used, even if you need to hold shift to type that character. The mapping [m][m] can never be typed on a keyboard, but can be used to create a mapping that can be activated by another map. subsection:Map{nbsp}commands[:map-commands] |:map| ||:map {lhs} {rhs}|| + |:nm| |:nmap| ||:nm[ap] {lhs} {rhs}|| + |:vm| |:vmap| ||:vm[ap] {lhs} {rhs}|| + |:im| |:imap| ||:im[ap] {lhs} {rhs}|| + |:cm| |:cmap| ||:cm[ap] {lhs} {rhs}|| + ________________________________________________________________________________ Map the key sequence {lhs} to {rhs} for the applicable mode(s). The {rhs} is remapped, allowing for nested and recursive mappings. Warning: Mappings are NOT saved between sessions, make sure you put them in your vimperatorrc file! ________________________________________________________________________________ |:no| |:noremap| ||:no[remap] {lhs} {rhs}|| + |:nn| |:nnoremap| ||:nn[oremap] {lhs} {rhs}|| + |:vn| |:vnoremap| ||:vn[oremap] {lhs} {rhs}|| + |:ino| |:inoremap| ||:ino[remap] {lhs} {rhs}|| + |:cno| |:cnoremap| ||:cno[remap] {lhs} {rhs}|| + ________________________________________________________________________________ Map the key sequence {lhs} to {rhs} for the applicable mode(s). No remapping of the {rhs} is performed. ________________________________________________________________________________ |:unm| |:unmap| ||:map {lhs} {rhs}|| + |:nun| |:nunmap| ||:nun[map] {lhs} {rhs}|| + |:vun| |:vunmap| ||:vun[map] {lhs} {rhs}|| + |:iu| |:iunmap| ||:iu[nmap] {lhs} {rhs}|| + |:cu| |:cunmap| ||:cu[nmap] {lhs} {rhs}|| + ________________________________________________________________________________ Remove the mapping of {lhs} for the applicable mode(s). ________________________________________________________________________________ |:mapc| |:mapclear| ||:mapc[lear]|| + |:nmapc| |:nmapclear| ||:nmapc[lear]|| + |:vmapc| |:vmapclear| ||:vmapc[lear]|| + |:imapc| |:imapclear| ||:imapc[lear]|| + |:cmapc| |:cmapclear| ||:cmapc[lear]|| + ________________________________________________________________________________ Remove all mappings for the applicable mode(s). All user-defined mappings are cleared. ________________________________________________________________________________ |:map| ||:map|| + |:nm| |:nmap| ||:nm[ap]|| + |:vm| |:vmap| ||:vm[ap]|| + |:im| |:imap| ||:im[ap]|| + |:cm| |:cmap| ||:cm[ap]|| + ________________________________________________________________________________ List all mappings for the applicable mode(s). ________________________________________________________________________________ |:map| ||:map {lhs}|| + |:nm| |:nmap| ||:nm[ap] {lhs}|| + |:vm| |:vmap| ||:vm[ap] {lhs}|| + |:im| |:imap| ||:im[ap] {lhs}|| + |:cm| |:cmap| ||:cm[ap] {lhs}|| + ________________________________________________________________________________ List all mappings starting with {lhs} for the applicable mode(s). ________________________________________________________________________________ subsection:Special{nbsp}arguments{nbsp}[:map-arguments] |:map-| + When the first argument to one of the mapping commands is [c][c], {rhs} is not echoed to the command line, nor, for that matter, anything else until the command has completed. subsection:Mapping{nbsp}and{nbsp}modes[:map-modes] Keys can be mapped in four distinct modes: * Normal mode * Visual mode * Insert mode * Command-line mode |map-overview| |map-modes| + Below is an overview of which modes each map command applies to: // TODO: table format :map :noremap :unmap :mapclear - both Normal and Visual modes :nmap :nnoremap :nunmap :nmapclear - Normal mode :vmap :vnoremap :vunmap :vmapclear - Visual mode :imap :inoremap :iunmap :imapclear - Insert mode :cmap :cnoremap :cunmap :cmapclear - Command-line mode subsection:Special{nbsp}characters[:map-special-chars] || + |||| ________________________________________________________________________________ Do nothing. This command is useful for disabling a specific mapping. [c]:map [c] will prevent [m][m] from doing anything. ________________________________________________________________________________ || |map_return| + |||| ________________________________________________________________________________ Expand to a line terminator in a key mapping. An Ex command in the {rhs} of a mapping requires a line terminator after it so that it is executed when the mapping is expanded. [m][m] should be used for this purpose. ________________________________________________________________________________ || |mapleader| + |||| ________________________________________________________________________________ Expands to the value of the "mapleader" variable in key mapping. If "mapleader" is unset or empty then "\" is used. Example: + \{nbsp}[c]:map h :echo "Hello"[c] + works like + \{nbsp}[c]:map \h :echo "Hello"[c] + but after + \{nbsp}[c]let mapleader = ","[c] + it works like + \{nbsp}[c]:map ,h :echo "Hello"[c] ________________________________________________________________________________ section:Abbreviations[abbreviations] Vimperator can automatically replace words identified as abbreviations, which may be used to save typing or to correct commonly misspelled words. An abbreviation can be one of three types that are defined by the types of constituent characters. Whitespace and quotes are non-keyword types, and all other characters are keyword types. 1. A "full-id" abbreviation consists entirely of keyword characters (e.g., "teh", "msoft"). 2. An "end-id" abbreviation ends in keyword character but otherwise contains all non-keyword characters (e.g., "'i"). 3. A "non-id" abbreviation ends in a non-keyword character but otherwise contains any non-whitespace character (e.g., "def'"). Strings that cannot be abbreviations include "a'b" and "a b". An abbreviation is recognized when a space, quote character, or [m][m] is typed after the abbreviation. There are no default abbreviations, and abbreviations are never recursive. |:ab| |:abbreviate| ||:ab[breviate] {lhs} {rhs}|| + ||:ab[breviate] {lhs}|| + ||:ab[breviate]|| ________________________________________________________________________________ Abbreviate a key sequence. Abbreviate {lhs} to {rhs}. If only {lhs} is given, list all abbreviations that start with {lhs}. If no arguments are given, list all abbreviations. ________________________________________________________________________________ |:ca| |:cabbrev| ||:ca[bbrev] {lhs} {rhs}|| + ||:ca[bbrev] {lhs}|| + ||:ca[bbrev]|| ________________________________________________________________________________ Abbreviate a key sequence for Command-line mode. Same as [c]:ab[breviate][c], but for Command-line mode only. ________________________________________________________________________________ |:ia| |:iabbrev| ||:ia[bbrev] {lhs} {rhs}|| + ||:ia[bbrev] {lhs}|| + ||:ia[bbrev]|| ________________________________________________________________________________ Abbreviate a key sequence for Insert mode. Same as [c]:ab[breviate][c] but for Insert mode only. ________________________________________________________________________________ |:una| |:unabbreviate| ||:una[bbreviate] {lhs}|| + ________________________________________________________________________________ Remove an abbreviation. ________________________________________________________________________________ |:cuna| |:cunabbrev| ||:cuna[bbrev] {lhs}|| + ________________________________________________________________________________ Remove an abbreviation for Command-line mode. Same as [c]:una[bbreviate][c], but for Command-line mode only. ________________________________________________________________________________ |:iuna| |:iunabbrev| ||:iuna[bbrev] {lhs}|| + ________________________________________________________________________________ Remove an abbreviation for Insert mode. Same as [c]:una[bbreviate][c] but for Insert mode only. ________________________________________________________________________________ |:abc| |:abclear| + ||:abc[lear]|| ________________________________________________________________________________ Remove all abbreviations. ________________________________________________________________________________ |:cabc| |:cabclear| + ||:cabc[lear]|| ________________________________________________________________________________ Remove all abbreviations for Command-line mode. ________________________________________________________________________________ |:iabc| |:iabclear| + ||:iabc[lear]|| ________________________________________________________________________________ Remove all abbreviations for Insert mode. ________________________________________________________________________________ section:User-defined{nbsp}commands[user-commands] |:com| |:command| ||:com[mand]|| + ________________________________________________________________________________ List all user-defined commands. ________________________________________________________________________________ ||:com[mand] {cmd}|| + ________________________________________________________________________________ List all user-defined commands that start with {cmd}. ________________________________________________________________________________ ||:com[mand][!] [{attr}...] {cmd} {rep}|| + ________________________________________________________________________________ Define a new user command. The name of the command is {cmd} and its replacement text is {rep}. The command's attributes are {attr}. If a command with this name already exists an error is reported unless [!] is specified, in which case the command is redefined. Unlike Vim, the command may start with a lowercase letter. The command's behavior can be specified by providing attributes when the command is defined. |E175| |E176| |:command-nargs| + Argument handling By default user commands accept no arguments. This can be changed by specifying the -nargs attribute. The valid values are: `----------`-------------------------------------------------------------------- *-nargs=0* No arguments are allowed (default) *-nargs=1* One argument is allowed *-nargs=** Zero or more arguments are allowed *-nargs=?* Zero or one argument is allowed *-nargs=+* One or more arguments are allowed -------------------------------------------------------------------------------- |E180| |E181| |:command-complete| + Argument completion Completion for arguments to user defined commands is not available by default. Completion can be enabled by specifying one of the following arguments to the -complete option when defining the command. `----------------`-------------------------------------------------------------- *altstyle* alternate author style sheets *bookmark* bookmarks *buffer* buffers *color* color schemes *command* Ex commands *dialog* Firefox dialogs *dir* directories *environment* environment variables *event* autocommand events *file* files *help* help tags *highlight* highlight groups *javascript* JavaScript expressions *macro* named macros *mapping* user mappings *menu* menu items *option* Vimperator options *preference* Firefox preferences *search* search engines and keywords *shellcmd* shell commands *sidebar* sidebar panels *url* URLs *usercommand* user commands *custom,{func}* custom completion, provided by {func} -------------------------------------------------------------------------------- |E467| |E468| |:command-completion-custom| + Custom completion Custom completion can be provided by specifying the "custom,{func}" argument to -complete. The {func} is called with two arguments, a completion context, and an object describing the command's arguments. It should set the context's \'completions' property, or return an object, with \'items' and \'start' properties, describing the completions and where the replacement is to start. *start* is the index into the word being completed at which the returned values should be applied and *completions* is a two dimensional array of the form: [[arg1, description1], [arg2, description2], ...] // TODO: add examples |E177| |E178| |:command-count| + Count handling By default user commands do not accept a count. Use the -count attribute if you'd like to have a count passed to your user command. This will then be available for expansion as in the argument. |:command-bang| + Special cases By default a user command does not have a special version, i.e. a version executed with the ! modifier. Providing the -bang attribute will enable this and will be available in the argument. |:command-description| + Command description The command's description text can be set with -description. Otherwise it will default to "User-defined command". |:command-replacement-text| + Replacement text The replacement text {rep} is scanned for escape sequences and these are replaced with values from the user-entered command line. The resulting string is then executed as an Ex command. The valid escape sequences are: `----------`-------------------------------------------------------------------- ** The command arguments exactly as supplied ** Any supplied count, e.g. 5 ** ! if the command was executed with the ! modifier ** A literal '<' character to allow for a literal copy of one of the escape sequences. E.g. args> will expand to a literal -------------------------------------------------------------------------------- "q-" can be prefixed to the escape sequence so that the value is quoted, making it suitable for expression evaluation. Example: ________________________________________________________________________________ |:comc| |:comclear| + ||:comc[lear]|| ________________________________________________________________________________ Delete all user-defined commands. ________________________________________________________________________________ |:delc| |:delcommand| ||:delc[ommand] {cmd}|| + ________________________________________________________________________________ Delete the user-defined command {cmd}. ________________________________________________________________________________ section:Examples[command-examples] Add a :Google command to search via google: \{nbsp}[c]:command -nargs=* Google open google [c] // TODO: add decent examples // vim: set filetype=asciidoc: