4

使用 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 语句。魔术缓冲区看起来像: 在此处输入图像描述

4

1 回答 1

7

这很可能是错误的'errorformat'选择。尝试做

:make!

(砰!),看看这个窗口是否出现。如果不是,这是真的,您应该阅读:h 'errorformat'并设置它'make'。或者永远不要使用plain :makewithout bang而忘记跳转到错误(如果该脚本能够输出有关错误的信息)。


另一个想法:你能显示输出

:au ShellCmdPost,QuickFixCmdPre,QuickFixCmdPost

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


顺便说一句,您发布的命令中有两件事可以改进。首先,映射应该写成nnoremap。您不需要在这里重新映射,当您向 vimrc 添加一些其他映射时,它可能会节省您的时间。

其次,setlocal在 autocmd 中使用,而不是set. 为将在 sql one 之后打开的所有缓冲区设置set默认值。'makeprg'

于 2012-10-26T21:06:50.323 回答