Capture output of a vim command(internal or external), show in special
filterable buffer, and do something defined action when press <CR> or other
short cute.
Inspiration comes from Unite/ denite and Leaderf
Main point:
- Implemented by pure viml, no dependency other than vim, better newer than vim8.
- Easily extend to any internal/custom command, provided the command output to
message by
echo, or external command output to stdout, which also make sense to execute without vnite. - Especially handy to view many intermal command that output more than one screen of message.
- Propose a new mode called
filter mode, some like increament search on ex mode, but filter the buffer line, only show that matched. Event map also available in filter mode by commandFnoremap.
Drawback:
- Not so beautiful appearance as LeaderF
Just use you favorite plugin manage tool. And if you perfer to manually
install, also easy to git clone down to ~/.vim/pack/opt/lymslive, then in
vim:
packaddd! vnite
Or you can only copy the subdir autoload/vnite to ~/.vim/autoload/vnite
then in vim:
call vnite#plugin#load()
That is all, with full functionality except documentation.
Try prefix any command with CM , or CM -- if the command come with
complex arguments of its own.
:CM ls
:CM message
:CM CustomeCommand
:CM -- CustomeCommand -option1 -option2
A mapping of <C-CR> is difined when in cmdline to help quickly prefix CM
before real <CR> fired.
When shows the output message buffer, press / to enter filter mode. It
will only begin to filter if input at least 3 characters. Press <Esc> or
<C-C> to exit filter mode, back to normal mode in message buffer.
Move cursor as normal with jk, or in filter mode <C-N> <C-P>, press
<CR> on an interesting line, then will trigger an action if difined.
To list all the supported command that have defined action, use one of the following:
:Vnite
:CM Vnite
If used with the CM prefix version, the commands are aslo list in message
buffer, may select and press <CR> to execute it, especailly fit if the
command required no argument.
See example in autoload/vnite/command/oldfiles. The simplest case is just
define a function vnite#command#CommandName#CR(), it will called by vnite
when press <CR> on message buffer line, with a object argument where has a
key named text to store the current line text, say a:message.text. It is
term of user to parset the text, extract useful information.
But much more custom can be handled.
Copy the file autoload/vnite/config.vim to ~/.vim/autoload/vnite/config.vim,
modify the value of global viriables and the bound map, the comment may
helpful.
- asyncrun for external command
CM !external - predifined action for more usefull internal vim command
- bug fix