vim-dispatch中文文档
简介
利用Vim编译器系统的强大功能而不受同步限制.
命令
dispatch-:Make
:Make[参数],使用当前的:compiler设置,在前台分发构建.适配器策略各不相同,但目标是不窃取焦点,就实现可见性.构建后,加载结果到quickfix列表并调用:cwindow.此命令适合如"构建 此文件"等较短的任务.
:Make![参数]使用当前编译器设置,在后台分发构建.使用:Copen加载结果.此命令适合如"运行整个测试套件",等较长任务.
dispatch-:Copen
:Copen加载最新构建到quickfix列表中并使用:copen打开它.在完成构建前调用它.
:Copen!用最后解析器加载最新构建到快速修复列表中.无法判断原因时,这很有用.
dispatch-:Dispatch:
:Dispatch[!][选项]{程序}[参数]
找到设置'makeprg'为{程序}的编译器插件并对给定的{程序}和{参数},使用'errorformat'来分发Make,如果未找到编译器插件,则用%+I%.%#通用格式.Make是当前,而分发使用特定编译器插件.
:Dispatch,通过在编译器插件中查找CompilerSet makeprg={程序}\[参数]或CompilerSet makeprg={程序}来选择编译器.要强制给定{程序}使用给定{编译器},请创建~/.vim/after/compiler/{编译器}.vim,并添加如下一行:
"CompilerSet makeprg={程序}"
如果需要更多控制,可设置g:dispatch_compilers,来包含键命令和值的编译器插件.使用空值跳过匹配串,并用其余命令重试.
let g:dispatch_compilers = {
\ "latex": "tex",
\ "bundle exec": ""
}
可可选的在{程序}前提供以下1+选项
1,-compiler=...,强制用编译器插件
2,-dir=...,在给定目录中运行命令
:Dispatch[!][选项]--[参数]
相当于:Make但接受选项.
b:dispatch
:Dispatch[!][选项],使用b:dispatch中的选项,程序和参数调用:Dispatch.在quickfix窗口中,它重新运行显示的分发.无其他默认值时,相当于:Make.
dispatch-:FocusDispatch
:FocusDispatch[选项]{程序}[参数],无参设置:Dispatch的全局默认命令.覆盖b:dispatch.
:FocusDispatch![选项]{程序}[参数],无参设置:Dispatch的局部默认命令.覆盖b:dispatch和全局默认值.
:FocusDispatch!,清除:Dispatch的全局和窗口本地默认值.
:FocusDispatch,显示无参调用:Dispatch时运行的任务.
:0Dispatch[!][选项],提供区间来:Dispatch,跳过重点任务并强制b:dispatch.
dispatch-:AbortDispatch
:AbortDispatch,中止最近构建.
:AbortDispatch{命令},中止{命令}的最新构建.
dispatch-:Start
:Start[选项]{命令}
在新得焦窗口中启动进程.如果{命令}和执行目录匹配先前:Start调用,如果可能,让其得焦.选项:
-dir=...,在给定目录中运行命令.
-title=...,支持适配器的短标签
-wait=...何时显示按回车提示:"always","never"或"error".
:Start![选项]{命令}
在新的,无焦点窗口中启动进程.如果{命令}和当前工作目录匹配先前的:Start调用,闲着.
b:start
:Start[!][选项].不带参数,:Start由b:start给出的选项和命令.如果未设置,则回退到'shell'.
dispatch-:Spawn
:Spawn[!][选项][命令]
类似:Start,但总是产生新进程而不是工作在现有进程.默认总是生成新的'shell'.
:Spawn[!][选项]
给:Spawn提供区间来生成b:dispatch.方便使用交互式调试器.
分发的映射
提供了以下方便映射.
m<CR> :Make<CR>
m<Space> :Make<Space>
m! :Make!
m? Show "makeprg"
`<CR> :Dispatch<CR>
`<Space> :Dispatch<Space>
`! :Dispatch!
`? :FocusDispatch<CR>
"<CR> :Start<CR>
"<Space> :Start<Space>
"! :Start!
"? Show b:start
g"<CR> :Spawn<CR>
g"<Space> :Spawn<Space>
g"! :Spawn!
g"? Show "shell"
可用g:dispatch_no_maps=1禁用
分发策略
按优先级列举策略.使用第一个可用的.一些策略仅针对一组任务.
用给定策略分别赋值g:dispatch_no_strategyname_make或g:dispatch_no_strategyname_start来禁用:Make/:Dispatch或:Start/:Spawn.如,要避免:Dispatch使用Job处理器:
let g:dispatch_no_job_make = 1
除了使用VimResized的Tmux外,所有策略都需要作业支持加上带FIFO文件系统(基本上除了Windows之外所有)或客户服务来支持前台制作.
Tmux
前台在底部拆分出新小窗口.关闭面板触发加载结果到quickfix列表中的VimResized事件.
也可在GUI使用tmux策略.从tmux内部启动Vim或赋值g:tmux_session.对前台制作用新窗口而不是拆分.
作业
使用Vim8和Neovim中的作业支持实时更新quickfix列表.
GNU屏幕
总是使用新窗口.
终端
使用Vim和Neovim各自的:terminal功能.
窗口
可用标准的cmd.exe或cygwin壳.前台和后台,都最小化启动:Make调用来避免失焦.
iTerm
如果在MacVim中打开了至少一个iTerm窗口,或如果Vim在iTerm中运行,则会触发此策略.仅用于:Start.
X11
仅对:Start,使用g:dispatch_terminal_exec,"$TERMINAL-e"或"xterm-e".后台调用需要安装wmctrl(来切回焦点到Vim).
无头
分叉任务到后台.它正在工作,但是你看不到它.记得检查:Copen.存在该策略表明:Make!和:Start!永远不会阻止Vim.
同步
所有其他方法都失败时,运行:make/:!.
浙公网安备 33010602011771号