Skip to content

tomtom/tinykeymap_vim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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