在 Win7 下运行 gVim 的本机编译时,我的 vimrc 中有以下内容:
if has ("win32")
let $TMP="C:/tmp"
setlocal equalprg=tidy\ --output-xhtml\ y\ -utf8\ --wrap-attributes\ 1\ --vertical-space\ 1\ --indent\ auto\ --wrap\ 0\ --show-body-only\ auto\ --preserve-entities\ 1\ -q\ -f\ shellpipe=2>
endif
这应该创建一个临时文件。但是,运行命令后,我看到:
shell returned 1
E485: Can't read file C:\tmp\VIoC935.tmp
本机 Windows E485 错误的常见建议是设置 tmp 变量,正如您从我的 vimrc 片段中看到的那样。如果我删除 let 语句,我会得到类似的结果:
shell returned 1
E485: Can't read file C:\Users\ksk\AppData\Local\Temp\VIfFA01.tmp
在这两种情况下;两个目录都存在,gVim 可以将文件写入这些位置,即
:w C:\Users\ksk\AppData\Local\Temp\VIfFA01.tmp
在当前缓冲区中将写入此文件而不会出错。
有趣的是,在写这个的时候,我发现如果我创建一个新的缓冲区,并删除原来的缓冲区,equalprg 函数运行没有错误(有和没有 vimrc 中的“let”语句)