我不希望在VIM中的makeprg之后看到空缓冲区

Ant*_*rov 3 django vim

使用VIM我想执行当前的sql文件并查看结果.我试过以下(./manage.py dbshell是一个Django包装器psql)

nmap <silent> <Leader>r :make<CR>
autocmd FileType sql set makeprg=cat\ %\\\|./manage.py\ dbshell
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是在按ENTER或键入命令后继续 VIM总是显示空缓冲区(可能是错误列表).如何跳过它的开头?

如果我在命令模式下运行相同它将是我所期望的(没有讨厌的缓冲区)

:!cat %|./manage.py dbshell
Run Code Online (Sandbox Code Playgroud)

我的SQL脚本包含一个select语句.魔术缓冲区看起来像: 在此输入图像描述

ZyX*_*ZyX 6

这可能是错误的'errorformat'选择.试着做

:make!
Run Code Online (Sandbox Code Playgroud)

(与爆炸!)并查看是否出现此窗口.如果没有,这是真的,您应该阅读:h 'errorformat'并另外设置它'make'.或者只是从不使用普通:make而没有爆炸,忘记跳转到错误(如果该脚本能够输出有关错误的信息).


另一个想法:你能展示出的输出吗?

:au ShellCmdPost,QuickFixCmdPre,QuickFixCmdPost
Run Code Online (Sandbox Code Playgroud)

?它也可能是在这三个事件之一上启动的某些插件或vimrc代码的问题.


顺便说一句,你发布的命令中有两件事可以改进.首先,映射应写为nnoremap.您不需要在此处重新映射,当您向vimrc添加其他映射时,它可以节省您的时间.

第二,setlocal在autocmd中使用,而不是set.随着set你设置默认'makeprg'为将后SQL一个被打开的所有缓冲区.