Я использую gvim в Windows.
В моем _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()
Если я выполняю эту функцию (: Тест), я вижу бессмысленные символы (не цифры / буквы ASCII).
Если я использую cmd в качестве оболочки, она работает (без -name), поэтому, похоже, проблема заключается в получении вывода из powershell в vim.
Интересно, это прекрасно работает:
:!dir -name
Как это сделать:
:r !dir -name
ОБНОВЛЕНИЕ: подтверждение поведения, упомянутого Дэвидом
Если вы выполняете команды набора, упомянутые выше в _vimrc,: Проверка выводов ерунда. Однако, если вы выполняете их непосредственно в vim, а не в _vimrc,: Test работает должным образом.
Также я попытался использовать iconv на случай, если возникла проблема с кодировкой:
:echo iconv( system("dir -name"), "unicode", &enc )
Но это не имело никакого значения. Возможно, я использую неправильные типы кодирования.
Кто-нибудь знает, как заставить это работать?