8
在Vim中,讀取shell命令輸出的最佳方式(便攜式和快速)是什麼?這個輸出可能是二進制的,因此包含空值和(不)具有重要的尾隨換行符。我看到的當前解決方案:讀取shell命令輸出的最佳方法
- 使用
system()
。問題:不適用於NULL。 - 使用
:read !
。問題:不會保存結尾的換行符,嘗試智能檢測輸出格式(dos/unix/mac)。 - 使用
!
重定向到臨時文件,然後readfile(, "b")
來讀取它。問題:fs的兩次調用,shellredir
選項默認情況下也會重定向stderr,它應該不太容易(這裏提到的'shellredir'
是因爲它可能被設置爲有效值)。 - 使用
system()
並通過xxd
過濾輸出。問題:非常緩慢,最不便攜(管道沒有相當於'shellredir'
)。
還有其他想法嗎?
你可以試試' =系統( 'printf的 '' \ x00的' '')'。它不會輸出任何東西,而':%!printf'\ x00''會將單個NULL看作'^ @'在緩衝區中(大問題:':%!printf'\ x00 \ r \ n''會一樣)。 –
ZyX
2012-02-08 04:01:12
這裏的問題是,我不想有兩個功能:「將命令讀入緩衝區」,通常可以通過「%!」和「將命令輸出到文件中」來實現,我不能說我永遠不會需要更多。類似於'readfile()'是這種情況下最靈活的解決方案。 – ZyX 2012-02-08 04:09:03
剛想到使用perl/python支持;請參閱初學者的答案 – sehe 2012-02-08 08:22:07