Windowsでgvimを使用しています。
_vimrc に以下を追加しました:
set shell=powershell.exe
set shellcmdflag=-c
set shellpipe=>
set shellredir=>
function! Test()
echo system("dir -name")
endfunction
command! -nargs=0 Test :call Test()
この関数 (:Test) を実行すると、無意味な文字 (非数字/文字 ASCII 文字) が表示されます。
シェルとしてcmdを使用すると(-nameなしで)動作するため、powershellからvimへの出力に問題があるようです。
興味深いことに、これはうまく機能します。
:!dir -name
これと同じように:
:r !dir -name
更新:デビッド が言及した動作の確認
上記の set コマンドを _vimrc で実行すると、:Test はナンセンスを出力します。ただし、_vimrc ではなく vim で直接実行すると、:Test は期待どおりに機能します。
また、エンコーディングの問題である場合に備えて、iconv を使用してみました。
:echo iconv( system("dir -name"), "unicode", &enc )
しかし、これは何の違いもありませんでした。ただし、間違ったエンコーディングタイプを使用している可能性があります。
これを機能させる方法を知っている人はいますか?