使用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语句.魔术缓冲区看起来像:

这可能是错误的'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一个被打开的所有缓冲区.