tinykeymap_vim
tinykeymap_vim copied to clipboard
Tiny, temporary keymaps
This plugin is a 90% clone of Andy Wokula's tinymode (vimscript #2223). It takes a different approach that hopefully avoids certain problems without creating new ones. tinymode actually creates maps to do its job, tinykeymap only creates maps for the entry sequence and uses the |getchar()| function to handle further input.
This plugin lets users define "temporary keymaps", a.k.a. tinykeymaps, with the |tinykeymap#EnterMap()| function. Users can define a map to activate a tinykeymap. Users can then use single key shortcuts to trigger commands defined with |tinykeymap#Map()|. Pressing an undefined key or <Esc>, deactivates the tinykeymap.
tinykeymap comes with the following pre-defined tinykeymaps (see |g:tinykeymap#mapleader| and the related g:tinykeymap#*#map variables for how to customize the key binding):
buffers ... Navigate/operate on buffers
Enter map: <Leader>mb
diff ... Navigate/operate on |diff|s
Enter map: <Leader>md
filter ... "filter" text in a buffer using folds
Enter map: <Leader>mf
lines ... Navigate/operate on lines (similar to vimscript #4140)
Enter map: <Leader>ml
loc ... Navigate the |location-list|
Enter map: <Leader>mo
qfl ... Navigate the |quickfix| list
Enter map: <Leader>mq
tabs ... Navigate/operate on tabs
Enter map: gt
undo ... Navigate/operate on the undo tree (with optional support for
vimscript #4177)
Enter map: <Leader>mu
windows ... Navigate/operate on windows
Enter map: <C-W>
Example definition for a "tabs" tinykeymap (heavily based on Andy Wokula's tabs mode for tinymode): >
call tinykeymap#EnterMap('tabs', 'gt', {'name': 'Tabs mode'})
call tinykeymap#Map('tabs', 'n', 'tabnew')
call tinykeymap#Map('tabs', 't', 'norm! gt')
call tinykeymap#Map('tabs', 'T', 'norm! gT')
call tinykeymap#Map("tabs", "^", "tabfirst")
call tinykeymap#Map("tabs", "$", "tablast")
call tinykeymap#Map("tabs", "c", "tabclose")
Example use of the above tinykeymap: E.g. pressing gt3n^c2t will:
gt ... Enter tabs mode
3n ... create 3 new tabs,
^ ... select the first one,
c ... close it, and
2t ... move to the second tab on the right.
A tinykeymap is exited (1) by pressing <Esc> or (2) by timeout (see |g:tinykeymap#timeout|).
Differences to tinymode:
- tinykeymaps and maps may have options (optional)
- tinykeymaps can be buffer-local
- dealing with [count] is easier (if a map contains "<count>", this
placeholder is replaced with the current [count], i.e. a
previously entered number; otherwise the expression is evaluated
[count] times)
- avoid a certain misleading error message
submode (vimscript #2467) is another package that provides similar functionality.
Install~
In order to install the vba, open the vba file in VIM and type: >
:so %
See :help vimball for details.
Optional enhancements:
tlib (vimscript #1863) ... highlight current line in some maps
By default, tinykeymap will load all tinykeymaps in your 'runtimepath'. If this is not what you want, set |g:tinykeymaps_default| in your |vimrc| file.
Also available via git: http://github.com/tomtom/tinykeymap_vim/ Bug tracker: https://github.com/tomtom/tinykeymap_vim/issues/
Dependencies: tlib :: http://github.com/tomtom/tlib_vim
License: GPLv3 or later