2012-10-26 34 views
3

使用VIM我想執行當前的sql文件並查看結果。我試過以下(./manage.py dbshell是一個Django包裝過psql我不想在VIM中的makeprg後面看到空的緩衝區

nmap <silent> <Leader>r :make<CR> 
autocmd FileType sql set makeprg=cat\ %\\\|./manage.py\ dbshell 

它工作正常。但後按ENTER鍵或鍵入命令繼續 VIM總是顯示我空的緩衝區(也許它是錯誤列表)。如何跳過其開場?

如果我運行在命令模式下同樣將它作爲我預期(沒有惱人的緩衝區)

:!cat %|./manage.py dbshell 

我的SQL腳本包含一個SELECT語句。和神奇的緩衝區看起來像: enter image description here

+0

屏幕截圖將有助於識別神祕緩衝區。如果是quickfix窗口,可以添加類似'|的東西cclose'在你的映射結束。 – romainl

+0

我已經添加了屏幕截圖 –

+0

嗯...我期待着一個正常的狀態行,但是你使用了我無法閱讀的powerline。無論如何,這件事是*不是* quickfix或錯誤列表。你可以發佈manage.py的內容嗎? – romainl

回答

6

這很可能是錯誤'errorformat'選項。嘗試做

:make! 

(含砰!),看看是否會出現這個窗口。如果沒有,這是真的,你應該閱讀:h 'errorformat',並且除了'make'之外還設置它。或者從來沒有使用普通的:make而沒有爆炸,並忘記跳轉到錯誤(如果該腳本能夠輸出關於錯誤的信息)。


另一個想法:我能看的

:au ShellCmdPost,QuickFixCmdPre,QuickFixCmdPost 

輸出?這也可能是在這三個事件之一上啓動的某個插件或vimrc代碼的問題。


順便說一句,您在發佈的命令中有兩件事情可以改進。首先,映射應寫爲nnoremap。你不需要在這裏重新映射,當你添加一些其他映射到你的vimrc時,它可以節省你的時間。

其次,在autocmd中使用setlocal,而不是set。使用set,您可以爲所有將在sql之後打開的緩衝區設置默認的'makeprg'

+0

':make!'很好,謝謝 –