Ⅰ. 插件描述
Support to setup Elixir development environment in Vim.Ⅱ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'liquidz/vivi-vim'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'liquidz/vivi-vim'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'liquidz/vivi-vim'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/liquidz/vivi.vim
Ⅳ. 文档说明
= vivi.vim
image:https://circleci.com/gh/liquidz/vivi.vim.svg?style=svg["Circle CI", link="https://circleci.com/gh/liquidz/vivi.vim"]
Do vim need a reason to help elixir developers?
== Features
- Checking syntax
- Mix integration
- Viewing references
- Omni completion
== Requirements
Vim 7.3.885 or later with link:http://vimdoc.sourceforge.net/htmldoc/if_lua.html[Lua] enabled
== Installation
.neobundle
[source,vim,subs="verbatim,macros"]
NeoBundle 'liquidz/vivi.vim', {
\ 'depends': [
\ 'link:https://github.com/elixir-lang/vim-elixir[elixir-lang/vim-elixir]',
\ 'link:https://github.com/Shougo/vimproc.vim[Shougo/vimproc.vim]',
\ 'link:https://github.com/Shougo/neocomplete.vim[Shougo/neocomplete.vim]',
\ 'link:https://github.com/thinca/vim-quickrun[thinca/vim-quickrun]',
\ 'link:https://github.com/thinca/vim-ref[thinca/vim-ref]',
\ 'link:https://github.com/osyo-manga/shabadou.vim[osyo-manga/shabadou.vim]',
\ 'link:https://github.com/osyo-manga/vim-watchdogs[osyo-manga/vim-watchdogs]'
\ ]}To use link:https://github.com/scrooloose/syntastic[Syntastic] instead of vim-watchdogs,
add scrooloose/syntastic and remove shabadou.vim and vim-watchdogs.
== Interface
=== Commands
[options="header,autowidth"]
|===
| command | notes
| ViviMixRun a| Run mix run $CURRENT_FILE in mix project, or run elixir $CURRENT_FILE.
| ViviMixDepsGet a| Run mix deps.get.
| ViviMixDepsUpdateAll a| Run mix deps.update --all.
| ViviMixTest a| Run mix test.
| ViviMixTestForCurrentLine a| Run mix test for current line number.
| ViviMixTestAgain a| Run mix test as same as last testing condition.
| ViviKillAllIEx | Kill all IEx processes.
|===
=== Key Mappings
[options="header,autowidth"]
|===
| mode | mapping | notes
| normal | <Plug>(vivi_mix_run) a| call ViviMixRun command.
| normal | <Plug>(vivi_mix_deps_get) a| call ViviMixDepsGet command.
| normal | <Plug>(vivi_mix_deps_update_all) a| call ViviMixDepsUpdateAll command.
| normal | <Plug>(vivi_mix_test) a| call ViviMixTest command.
| visual | <Plug>(vivi_mix_test_for_current_line) a| call ViviMixTestForCurrentLine command.
| normal | <Plug>(vivi_mix_test_again) a| call ViviMixTestAgain command.
| normal | <Plug>(vivi_kill_all_iex) a| call ViviKillAllIEx command.
|===
== Configuration
.Enables auto syntax checking. (default: DISABLED)
This option supports only vim-watchdogs.
[source,vim]
let g:vivi_enable_auto_syntax_checking = 1
.Enables default key mappings. (default: DISABLED)
Default key mappings is <<default_keymap,here>>.
[source,vim]
let g:vivi_enable_default_key_mappings = 1
.Change quickrun configration for mix run and mix test.
[source,vim]
let g:vivi_mix_run_config = { ... }
let g:vivi_mix_test_config = { ... }
.Enables auto warm up IEx concurrent process. (default: DISABLED)
Warming up IEx helps you get quick response in viewing reference or omni completion.
[source,vim]
let g:vivi_enable_auto_warm_up_iex = 1
.Enable omni completion. (default: DISABLED)
[source,vim]
let g:vivi_enable_omni_completion = 1
let g:neocomplete#enable_at_startup = 1 " RECOMMENDED
[[default_keymap]]
=== Default Key Mappings
[options="header,autowidth"]
|===
| mode | lhs | rhs | notes
| insert | >> | |> | Pipeline.
| normal | <Leader>r | <Plug>(vivi_mix_run) |
| normal | <Leader>t | <Plug>(vivi_mix_test_again) |
| visual | <Leader>t | <Plug>(vivi_mix_test_for_current_line) |
| normal | <Leader>vk | <Plug>(vivi_kill_all_iex) |
|===
[[omni_completion]]
== Omni Completion
Currently, vivi completes only module functions.
Manual setting example is here, if you don't want to use <<enable_omnicomp,g:vivi_enable_omni_completion>>.
[source,vim]
setlocal omnifunc=vivi#complete#omni
if !exists('g:neocomplete#sources#omni#input_patterns')
let g:neocomplete#sources#omni#input_patterns = {}
endif
let g:neocomplete#sources#omni#input_patterns.elixir = '1 *t].'
== License
Copyright (C) 2015 link:http://twitter.com/uochan[Masashi Iizuka]
Distributed under the MIT License.
- .[:digit: ↩