vital.vim
A comprehensive Vim utility functions for Vim plugins.
This is like a plugin which has both aspects of Bundler and jQuery at the same time.
Targets
If you are a Vim user who doesn't make Vim plugins, please ignore this page.
If you are a Vim plugin author, please check this out.
What vital.vim provides
Module | Description |
---|---|
Assertion | assertion library |
Bitwise | bitwise operators |
ConcurrentProcess | manages processes concurrently with vimproc |
Data.Base64 | base64 utilities library |
Data.BigNum | multi precision integer library |
Data.Closure | Provide Closure object |
Data.Collection | Utilities both for list and dict |
Data.Dict | dictionary utilities library |
Data.LazyList | lazy list including file io |
Data.List | list utilities library |
Data.Optional | optional value library |
Data.OrderedSet | ordered collection library |
Data.String | string utilities library |
Data.Tree | tree utilities library |
Database.SQLite | sqlite utilities library |
DateTime | date and time library |
Experimental.Functor | Utilities for functor |
Interpreter.Brainf__k | Brainf**k interpreter |
Locale.Message | very simple message localization library |
Lua.Prelude | crucial functions for lua integration |
Mapping | Utilities for mapping |
Math | Mathematical functions |
OptionParser | Option parser library for Vim |
Prelude | crucial functions |
Process | Utilities for process |
ProcessManager | process manager with vimproc |
Random.Mt19937ar | random number generator using mt19937ar |
Random.Xor128 | random number generator using xor128 |
Random | Random utility frontend library |
System.Cache | An unified cache system |
System.File | filesystem utilities library |
System.Filepath | path string utilities library |
Text.CSV | CSV library |
Text.INI | INI file library |
Text.LTSV | LTSV library |
Text.Lexer | lexer library |
Text.Parser | parser library |
Text.Sexp | S-Expression parser |
Text.TOML | TOML library |
Text.Table | Character table library |
Vim.Buffer | Vim's buffer related stuff in general |
Vim.BufferManager | buffer manager |
Vim.Compat | Vim compatibility wrapper functions |
Vim.Message | Vim message functions |
Vim.Search | Vim's [I like function |
Vim.ScriptLocal | Get script-local things |
Web.HTML | HTML parser written in pure Vim script |
Web.HTTP | simple HTTP client library |
Web.JSON | JSON parser written in pure Vim script |
Web.URI | |
Web.XML | XML parser written in pure Vim script |
... and more ...
Let's get started
Install modules for your own plugin
Use :Vitalize
to install modules.
Please see the help for more details.
:Vitalize --name=your_plugin_name $HOME/.vim/bundle/your_plugin_dir/
You can also install only specified modules; recommended for making your repository size small, assuming you are going to upload it to a remote repository
:Vitalize --name=your_plugin_name $HOME/.vim/bundle/your_plugin_dir/ Data.String Data.List
Use vital functions
Assuming your Vim plugin name is ujihisa
. You can define your utility
function set ujihisa#util
just by
let s:V = vital#of('ujihisa')
function! ujihisa#util#system(...)
return call(s:V.system, a:000, s:V)
endfunction
and then you can call functions by ujihisa#util#system()
, without taking care
of vital.vim
itself. It's all hidden.
Vital has module system. The below is an example to import/load a module
Data.OrderedSet
and to call a function f()
of the module.
" Recommented way
let s:V = vital#of('ujihisa')
let s:O = s:V.import('Data.OrderedSet')
call s:O.f()
or
" Recommended way only if you rarely use the module
let s:V = vital#of('ujihisa')
call s:V.load('Data.OrderedSet')
call s:V.Data.OrderedSet.f()
or
" Available, but we don't recommend this very much
let s:V = vital#of('ujihisa')
call s:V.import('Data.OrderedSet', s:)
call s:f()
We recommend you to use a capital letter for a Vital module dictionary to assign.
If you want to become a vital developer
References
- Delegation in Vim script
- Core concept of vital (in Japanese)
- How to make a vital module (in Japanese)
- API Reference (in Japanese)
- Let's use vital.vim (in Japanese)
Authors
- thinca
- ujihisa (Tatsuhiro Ujihisa)
- tyru
- mattn
- rhysd
- ... and lots more https://github.com/vim-jp/vital.vim/graphs/contributors
License
Japanese original text: http://www.kmonos.net/nysl/
What's NYSL? and Why did we chose it?
NYSL is a very loose license like a Beer License, or more like WTFPL. See NYSL for details. (English and Japanese)
First, vital.vim is a bundling (static) library. We think everyone should be able to use it easily, without worrying about licensing stuff too much.
Second, In Japan, Strict Public Domain might be invalid. You outside Japan may interpret simply the license as Public Domain.
That's why we chose NYSL.
(See https://github.com/vim-jp/vital.vim/issues/26 about the discussion.)