我此行我的vimrc:如何消除重定向到Vim文件的延遲?
redir! >/Users/seanmackesey/.vim/.vimmessages
但消息沒有在這個文件後立即將是generated--當我在shell中運行tail -f .vimmessages
顯示,消息顯示慢,有點不正常。當我運行:messages
命令時,我得到一大堆信息有時,但我無法弄清楚模式是什麼。是否有辦法將每個消息立即附加到文件末尾?
我此行我的vimrc:如何消除重定向到Vim文件的延遲?
redir! >/Users/seanmackesey/.vim/.vimmessages
但消息沒有在這個文件後立即將是generated--當我在shell中運行tail -f .vimmessages
顯示,消息顯示慢,有點不正常。當我運行:messages
命令時,我得到一大堆信息有時,但我無法弄清楚模式是什麼。是否有辦法將每個消息立即附加到文件末尾?
全球:redir
的問題是它不會嵌套,所以它也會導致使用:redir
的映射和函數的錯誤。相反,使用
:set verbosefile=/Users/seanmackesey/.vim/.vimmessages
捕獲所有消息。因爲Vim的實現使用了緩衝輸出,不過你仍然會經歷一些分塊。
您沒有提及您打算使用此輸出的位置,因此很難提供更好的建議。如果您確實需要立即輸出到外部文件,則必須使用writefile()
或使用嵌入式腳本語言來寫入和刷新文件。
這似乎更可能是簡單的數據緩衝,而不是任何特定的時間延遲。
我通過Vim的7.3源grepped,它看起來像redir
與的fopen完成,提出,和putc將,和FCLOSE(即標準輸入輸出)。有沒有出現任何調用fflush,setbuf以,setbuffer,setlinebuf與,或setvbuf用來所以重定向將始終使用由系統的標準輸入輸出的(可能是「塊緩衝」提供的默認緩衝一些方便的大小)。
您可以定期停止並重新啓動重定向有效地刷新數據:
的是redir END | redir! >>~/.vim/.vimmessages
短,似乎沒有成爲一個很好的方法,你想和redir
到一個文件中的內容。
嗯,我可能會最終實現啓動/停止包裝函數來生成調試消息。謝謝 – 2013-02-20 14:10:17
謝謝Ingo,很高興知道'redir'。我的意圖是使用輸出作爲調試的控制檯。在測試函數時,我想將其打開爲split或在相鄰的shell窗口中打開。 ':messages'命令總是在列表頂部打開,並在一個緩衝區中打開,我無法弄清楚如何拆分(只是說「按ENTER鍵或鍵入命令繼續」,並關閉它) – 2013-02-20 14:08:47
有一個看看Chip的[Decho插件](http://vim.sourceforge.net/scripts/script.php?script_id=120)。沒有使用它,但它允許查看消息並排和其他花哨的東西。對我而言,臨時插入':echomsg'就足夠了。 – 2013-02-20 15:18:51