Ⅰ. 插件描述
Asynchronous linting and make framework for Neovim/VimⅡ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'neomake/neomake-impatience-and-laziness'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'neomake/neomake-impatience-and-laziness'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'neomake/neomake-impatience-and-laziness'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/neomake/neomake
Ⅳ. 文档说明
Neomake is a plugin for [Vim]/[Neovim] to asynchronously run programs.
You can use it instead of the built-in :make
command (since it can pick
up your 'makeprg'
setting), but its focus is on providing an extra layer
of makers based on the current file (type) or project.
Its origin is a proof-of-concept for [Syntastic] to be asynchronous.
Requirements
Neovim
With Neovim any release will do (after 0.0.0-alpha+201503292107).
Vim
The minimal Vim version supported by Neomake is 7.4.503 (although if you don't
use g:neomake_logfile
older versions will probably work fine as well).
You need Vim 8.0.0027 or later for asynchronous features.
Installation
Use your preferred installation method for Vim plugins.
With vim-plug that would mean to add
the following to your vimrc:
Plug 'neomake/neomake'
Setup
If you want to run Neomake automatically (in file mode), you can configure it
in your vimrc
by using neomake#configure#automake
, e.g. by picking one of:
" When writing a buffer (no delay).
call neomake#configure#automake('w')
" When writing a buffer (no delay), and on normal mode changes (after 750ms).
call neomake#configure#automake('nw', 750)
" When reading a buffer (after 1s), and when writing (no delay).
call neomake#configure#automake('rw', 1000)
" Full config: when writing or reading a buffer, and on changes in insert and
" normal mode (after 500ms; no delay when writing).
call neomake#configure#automake('nrwi', 500)
(Any function calls like these need to come after indicating the end of plugins
to your plugin manager, e.g. after call plug#end()
with vim-plug.)
Advanced setup
The author liked to use the following, which uses different modes based on if
your laptop runs on battery (for MacOS or Linux):
function! MyOnBattery()
if has('macunix')
return match(system('pmset -g batt'), "Now drawing from 'Battery Power'") != -1
elseif has('unix')
return readfile('/sys/class/power_supply/AC/online') == ['0']
endif
return 0
endfunction
if MyOnBattery()
call neomake#configure#automake('w')
else
call neomake#configure#automake('nw', 1000)
endif
See :help neomake-automake
(in doc/neomake.txt) for more
information, e.g. how to configure it based on certain autocommands explicitly,
and for details about which events get used for the different string-based
modes.
Usage
When calling :Neomake
manually (or automatically throughneomake#configure#automake
(see above)) it will populate the window's
location list with any issues that get reported by the maker(s).
You can then navigate them using the built-in methods like :lwindow
/:lopen
(to view the list) and :lprev
/ :lnext
to go back and forth.
You can configure Neomake to open the list automatically:
let g:neomake_open_list = 2
Please refer to [:help neomake.txt
] for more details on configuration.
Maker types
There are two types of makers: file makers (acting on the current buffer) and
project makers (acting globally).
You invoke file makers using :Neomake
, and project makers using :Neomake!
.
See [:help neomake.txt
] for more details.
Manually run a maker
You can run a specific maker on the current file by specifying the maker's
name, e.g. :Neomake jshint
(you can use Vim's completion here to complete
maker names).
Default makers
For a list of default makers please see the
Makers page in the wiki.
Contributing
If you find this plugin useful, please contribute your maker recipes to the
repository! Check out autoload/neomake/makers/**/*.vim
for existing makers.
This is a community driven project, and maintainers are wanted.
Please contact @blueyed if you are interested.
You should have a good profile of issue triaging and PRs on this repo already.
Hacking / Testing
We are using Vader for our tests.
Logging
Set let g:neomake_logfile = '/tmp/neomake.log'
(dynamically or in your vimrc)
to enable debug logging to the given file.
From Neomake's source tree you can then run make tail_log
, which will color
the output and pipe it into less
, which folds long lines by default and will
follow the output (like tail -f
).
You can use Ctrl-C to interrupt for scrolling etc, and then F to follow again.
Running tests
Run all tests against your local Neovim and Vim
make test
Run a specific test file
make tests/integration.vader
Run some specific tests for Vim
make testvim VADER_ARGS=tests/integration.vader
Dockerized tests
The docker_test
target runs tests for a specific Vim version.
See Dockerfile.tests
for the Vim versions provided in the Docker image.
The image for this gets pulled from Docker Hub via
neomake/vims-for-tests.
NOTE: the Docker image used for tests does not include (different versions)
of Neovim at the moment.
Run all tests for Vim 8.0.586
make docker_test DOCKER_VIM=vim-8.0.586
Run all tests against all Vims in the Docker image
make docker_test_all
Donate
- Bitcoin: 1JscK5VaHyBhdE2ayVr63hDc6Mx94m9Y7R
- Flattr: [](
https://flattr.com/submit/auto?user_id=blueyed&url=https://github.com/neomake/neomake&title=Neomake&language=en_GB&tags=github&category=software)