Ⅰ. 插件描述
A vim plugin for running multiple process asynchronously base on neomake.Ⅱ. 基本信息
|
Ⅲ. 安装方法
使用Vundle管理器安装
在你的.vimrc下添加:Plugin 'tracyone/neomake-multiprocess'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall
对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。
使用NeoBundle管理器安装
在你的.vimrc下添加:NeoBundle 'tracyone/neomake-multiprocess'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall
使用VimPlug管理器安装
在你的.vimrc下添加:Plug 'tracyone/neomake-multiprocess'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall
使用Pathogen管理器安装
在终端中运行以下命令:cd ~/.vim/bundle
git clone https://github.com/tracyone/neomake-multiprocess
Ⅳ. 文档说明
A vim plugin for running multiple process asynchronously base on neomake.
<!-- vim-markdown-toc GFM -->
<!-- vim-markdown-toc -->
Feature
- Run multiple process asynchronously and output to quickfix window.
- Global search asynchronously, support ag, rg, grep and git grep, and output to quickfix window with
errorformatoption seted properly.
Screenshot
Installation
Use vim-plug:
Plug 'neomake/neomake'
Plug 'tracyone/neomake-multiprocess'Usage
:h neomakemp.txtFunctions
neomakemp#run_command(command [, callback] [,arglist] [, flag])Run command asynchronously:
callbackis aFuncrefvariable which will be called aftercommandexit.arglistis alistvariable which will be passed tocallbackflagspecify whether open quickfix window after command exited.
Global search charactor containing a match to the given PATTERN:
neomakemp#global_search(pattern [, flag])flag is bit base variable:
- 0x01-->search in opened buffer
- 0x02-->search original string
Keymappings
| Shortcut | mode | Description |
|---|---|---|
<Leader>vv | visual,normal | global search selected word or under current curosr |
<Leader>vb | visual,normal | searching through all existing buffers |
<Leader>vg | visual,normal | searching in current file |
<Leader>vr | normal | run command from user input |
<Leader>vs | normal | global search from user input |
you can remap it:
"search words on current cursor.
nmap <yourkey> <Plug>(neomakemp_global_search)
"run commands from user input
nmap <yourkey> <Plug>(neomakemp_run_command)
"search words from user input(regular expression)
nmap <yourkey> <Plug>(neomakemp_global_search2)
"search word on current cursor in exist buffers
nmap <yourkey> <Plug>(neomakemp_global_search_buf)
"search word in current file
nmap <yourkey> <Plug>(neomakemp_global_search_cur_file)Options
| Name | Description |
|---|---|
| g:neomakemp_grep_command | rg, ag , grep or git |
| g:neomakemp_exclude_files | list variable,specify the ignore file |
| g:neomakemp_exclude_dirs | list variable,specify the ignore directory |
Config example:
"autodetect the existence of commands and select the faster one(rg > ag > grep)
let g:neomakemp_grep_command = "ag"
"following is default value
let g:neomakemp_exclude_files=['*.jpg', '*.png', '*.min.js', '*.swp', '*.pyc','*.out','*.o']
let g:neomakemp_exclude_dirs=[ '.git', 'bin', 'log', 'build', 'node_modules', '.bundle', '.tmp','.svn' ]
Quickfix window will be opened under following condition:
- Global search
- Some error happened
flagis equal to 1
Show running status in statusline
Display running status of commands in vim-airline:
let g:airline_section_error = airline#section#create_right(['%{neomakemp#run_status()}'])Display running status in vim's buildin statusline:
let statusline.=neomakemp#run_status()Example
Following example showing how to generate cscope file asynchronously.
function! s:AddCscopeOut(read_project,...)
if a:read_project == 1
if empty(glob('.project'))
exec 'silent! cs add cscope.out'
else
for s:line in readfile('.project', '')
exec 'silent! cs add '.s:line.'/cscope.out'
endfor
endif
else
if a:0 == 1
exec 'cs add '.a:1.'/cscope.out'
else
exec 'silent! cs add cscope.out'
endif
endif
endfunction
let l:gen_cscope_files='find ' .a:dir. ' -name "*.[chsS]" > ' . l:cscopefiles
call neomakemp#RunCommand(l:gen_cscope_files.'&&cscope -Rbkq -i '.l:cscopefiles, function('<SID>AddCscopeOut'),[0,a:dir])Buy me a coffee
