Ich verwende gvim unter Windows.
In meiner _vimrc habe ich hinzugefügt:
set shell=powershell.exe
set shellcmdflag=-c
set shellpipe=>
set shellredir=>
function! Test()
echo system("dir -name")
endfunction
command! -nargs=0 Test :call Test()
Wenn ich diese Funktion ausführe (:Test), sehe ich unsinnige Zeichen (Nicht-Zahlen/Buchstaben-ASCII-Zeichen).
Wenn ich cmd als Shell verwende, funktioniert es (ohne -name), also scheint das Problem darin zu liegen, die Ausgabe von powershell in vim zu bekommen.
Interessanterweise funktioniert das hervorragend:
:!dir -name
Das gilt auch hier:
:r !dir -name
UPDATE: Bestätigung des Verhaltens, das von David
Wenn Sie die oben genannten set-Befehle in der _vimrc ausführen, gibt :Test Unsinn aus. Wenn Sie sie jedoch direkt in vim statt in der _vimrc ausführen, funktioniert :Test wie erwartet.
Ich habe auch versucht, iconv zu verwenden, falls es ein Kodierungsproblem war:
:echo iconv( system("dir -name"), "unicode", &enc )
Aber das machte keinen Unterschied. Ich könnte allerdings die falschen Kodierungstypen verwenden.
Weiß jemand, wie das funktionieren kann?