amiorin / tinykeymap_vim

Tiny, temporary keymaps

Home Page:http://www.vim.org/scripts/script.php?script_id=4199

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Example usage: Define a tinykeymap to make it easier to ...

    - operate on windows
    - operate on tabs
    - operate on text

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|).

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):

    tabs    gt         :: Operate on tabs
    windows <C-W>      :: Operate on windows
    buffers <Leader>mb :: Operate on buffers
    diff    <Leader>md :: Make it easier to work with |diff|s
    filter  <Leader>mf :: Fold lines not matching some pattern (default: word 
                         under cursor)
    lines   <Leader>ml :: Operate on lines
    loc     <Leader>mo :: Operate on the |location-list|
    qfl     <Leader>mq :: Operate on the |quickfix| list
    undo    <Leader>mu :: Operate on the |undo| tree

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.

-----------------------------------------------------------------------

Status:  Experimental
Install: See http://github.com/tomtom/vimtlib/blob/master/INSTALL.TXT
See http://github.com/tomtom for related plugins.

About

Tiny, temporary keymaps

http://www.vim.org/scripts/script.php?script_id=4199


Languages

Language:Vim Script 100.0%