我在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
更新:确认David提到的行为
如果在_vimrc中执行上面提到的set命令,则:test输出无效。但是,如果您直接在vim中而不是在_vimrc中执行它们,那么:测试按预期工作。
此外,我已经尝试使用iconv以防它是一个编码问题:
:echo iconv( system("dir -name"),"unicode",&enc )
但这没有什么区别。我可以使用错误的编码类型。
任何人都知道如何使这项工作?
这是一个黑客,但下面的作品在Vim 7.2。注意,我在CMD会话中运行Powershell。
if has("win32") set shell=cmd.exe set shellcmdflag=/c\ powershell.exe\ -NoLogo\ -NoProfile\ -NonInteractive\ -ExecutionPolicy\ RemoteSigned set shellpipe=| set shellredir=> endif function! Test() echo system("dir -name") endfunction
测试与以下…
>:!dir -name>:call Test()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。