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