使用VIM我想执行当前的sql文件并查看结果。我尝试了以下内容(./manage.py dbshell
是一个Django包装器psql
)
nmap <silent> <Leader>r :make<CR>
autocmd FileType sql set makeprg=cat\ %\\\|./manage.py\ dbshell
工作正常。但是在按ENTER或键入命令后继续 VIM总是显示空缓冲区(可能是错误列表)。如何跳过它的开头?
如果我在命令模式下运行相同,它将如我所料(没有恼人的缓冲区)
:!cat %|./manage.py dbshell
我的SQL脚本包含一个select语句。魔术缓冲区看起来像:
答案 0 :(得分:6)
'errorformat'
选项可能是错误的。尝试做
:make!
(与bang!)并查看是否出现此窗口。如果没有,则确实如此,您应该阅读:h 'errorformat'
并在'make'
之外另外设置它。或者从不使用普通的:make
而没有爆炸,忘记跳转到错误(如果该脚本能够输出有关错误的信息)。
另一个想法:你能否展示
的输出:au ShellCmdPost,QuickFixCmdPre,QuickFixCmdPost
?它也可能是在这三个事件之一上启动的某些插件或vimrc代码的问题。
顺便说一句,你发布的命令中有两件事可以改进。首先,映射应写为nnoremap
。您不需要在此处重新映射,它可以节省您在vimrc中添加其他映射的时间。
其次,在autocmd中使用setlocal
,而不是set
。使用set
为sql one之后打开的所有缓冲区设置默认值'makeprg'
。