Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tomtom/tinykeymap_vim

Tiny, temporary keymaps
https://github.com/tomtom/tinykeymap_vim

vim vim-plugin

Last synced: 5 days ago
JSON representation

Tiny, temporary keymaps

Awesome Lists containing this project

README

        

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 , 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: mb
diff ... Navigate/operate on |diff|s
Enter map: md
filter ... "filter" text in a buffer using folds
Enter map: mf
lines ... Navigate/operate on lines (similar to vimscript #4140)
Enter map: ml
loc ... Navigate the |location-list|
Enter map: mo
qfl ... Navigate the |quickfix| list
Enter map: mq
tabs ... Navigate/operate on tabs
Enter map: gt
undo ... Navigate/operate on the undo tree (with optional support for
vimscript #4177)
Enter map: mu
windows ... Navigate/operate on windows
Enter map:

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 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 "", 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