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[!][选项].不带参数,:Startb: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_makeg:dispatch_no_strategyname_start来禁用:Make/:Dispatch:Start/:Spawn.如,要避免:Dispatch使用Job处理器:

let g:dispatch_no_job_make = 1

除了使用VimResizedTmux外,所有策略都需要作业支持加上带FIFO文件系统(基本上除了Windows之外所有)或客户服务来支持前台制作.

Tmux

前台在底部拆分出新小窗口.关闭面板触发加载结果到quickfix列表中的VimResized事件.
也可在GUI使用tmux策略.从tmux内部启动Vim或赋值g:tmux_session.对前台制作新窗口而不是拆分.

作业

使用Vim8Neovim中的作业支持实时更新quickfix列表.

GNU屏幕

总是使用新窗口.

终端

使用VimNeovim各自的:terminal功能.

窗口

可用标准的cmd.execygwin壳.前台和后台,都最小化启动:Make调用来避免失焦.

iTerm

如果在MacVim中打开了至少一个iTerm窗口,或如果VimiTerm中运行,则会触发此策略.仅用于:Start.

X11

仅对:Start,使用g:dispatch_terminal_exec,"$TERMINAL-e""xterm-e".后台调用需要安装wmctrl(来切回焦点Vim).

无头

分叉任务到后台.它正在工作,但是你看不到它.记得检查:Copen.存在该策略表明:Make!:Start!永远不会阻止Vim.

同步

所有其他方法都失败时,运行:make/:!.

posted @   zjh6  阅读(23)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示