我在 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 作为 shell,它可以工作(没有 -name),所以问题似乎是从 powershell 获取输出到 vim。
有趣的是,这很好用:
:!dir -name
就像这样:
:r !dir -name
更新: 确认大卫提到的行为
如果在 _vimrc 中执行上面提到的 set 命令,:Test 会输出废话。但是,如果您直接在 vim 中而不是在 _vimrc 中执行它们, :Test 将按预期工作。
另外,我尝试使用 iconv 以防它是编码问题:
:echo iconv( system("dir -name"), "unicode", &enc )
但这没有任何区别。不过,我可能使用了错误的编码类型。
任何人都知道如何使这项工作?