我有一个抛出错误的小函数。这是功能:
function! GetPHPInfo(function_name)
let page = system("wget -q -O - 'php.net/" . a:function_name)
" let page = system("wget -q -O - 'google.com'")
return page
endfunction
当我从php.info使用wget时,我收到此错误:
E484: Can't open file /tmp/vRXHL5q/7
但不是当我从google.com使用wget时。我认为这是因为谷歌是一个比php.net更小的页面,因此可以写。如何更改tmp文件的允许大小?
答案 0 :(得分:1)
我认为你的结论是错误的;对临时文件的大小没有限制。相反,我认为这是一个逃避问题。由于传递的函数名中的特殊字符,命令行无效,导致命令失败,因此Vim无法捕获其输出。这是一个创建相同错误的演示(在Windows上):
:echo system('echo "fo"o"')
您需要使用shellescape()
,至少可以使用包含特殊字符的函数名称:
let page = system("wget -q -O - " . shellescape('php.net/' . a:function_name))
至少,您需要正确关闭单引号:
let page = system("wget -q -O - 'php.net/" . a:function_name . "'")
根据wget
的宽松程度,可能还需要额外的网址转义功能。 (那里没有内置功能。)