8
Vimでは、シェルコマンドの出力を読むのに最も便利な(移植性があり高速な)方法は何ですか?この出力はバイナリであり、したがってnullを含み、重要でない末尾の改行を持ちません。現在表示されているソリューション:シェルコマンドの出力を読み取る最良の方法
system()
を使用してください。問題:NULLで動作しません。:read !
を使用してください。問題:後続の改行を保存せず、出力形式(dos/unix/mac)をスマートに検出しようとします。!
を一時ファイルにリダイレクトし、次にreadfile(, "b")
を使用して読み取ります。問題:fsの2つの呼び出し、shellredir
オプションはデフォルトでstderrをリダイレクトします。これは移植性が低いはずです('shellredir'
は有効な値に設定される可能性が高いのでここで言及します)。system()
を使用し、フィルタ出力をxxd
にします。問題:非常に遅く、可搬性がほとんどありません(パイプには'shellredir'
に相当しません)。
他のアイデアはありますか?
あなたは ' =システム( 'printfの '' \ X00' '')'を試すことができます。 ':%!printf '\ x00' 'はバッファに'^@ 'と見える単一のNULLを入れます(大きな問題:'%%printf' \ x00 \ r \ n ''は何も出力しません)同じ)。 –
ZyX
ここで問題になるのは、 "%!"と "put command output to file"によって達成できる "read command into buffer"の2つの機能を持ちたくないということです。これ以上は必要ないとは言えません。この場合、readfile()とのアナログは最も柔軟な解決策です。 – ZyX
ちょうどperl/pythonサポートの使用を考えました。スターターの答えを見てください – sehe