Vim在Mac OS X上打开语法突出显示的文件时抱怨有一个临时文件


8

当我尝试使用Vim或MacVim打开文件(例如test / test_sequence.rb)时,出现以下错误:

"test/test_sequence.rb" 109L, 3697C
Vim(let):E484: Can't open file /var/folders/zO/zOCN9kiiGD4keWX3TWYEh++++TI/-Tmp-/vzTkbXD/0

这似乎仅限于具有某种语法高亮显示的文件。我仍然可以编辑文件,但必须使用:w!第一次写更改。我在Mac OS X上使用vim。由于运气不好,我尝试了很多Google搜索,这真令人沮丧。有人可以为此提供修复程序吗?

编辑:编辑语法突出显示的LaTeX文件时没有出现此错误,但使用语法突出显示的Ruby文件却没有。

Answers:


6

原来问题出在外壳上。Vim试图使用/ bin / screen作为外壳

set shell /bin/sh

在我的vimrc中解决了这个问题。


3
当我将登录shell更改为fishshell时,自己动手即可。感谢您的提示:)
Yeraze 2013年

同样在这里,设置默认的外壳来钓鱼后,它发生在我身上:)
imslavko

3
好吧,它必须添加:set shell=/bin/bash
paldepind

对我来说,语法必须是set shell=/bin/sh
Ganesh Hegde,2015年

但是整个事情似乎对我来说是filetype = ruby​​特有的。
ThomasH 2015年

1

我发现如果您su使用其他用户,尝试使用临时文件的进程可能会产生类似/var/folders/zO/zOCN9kiiGD4keWX3TWYEh++++TI/-Tmp-/vzTkbXD/0: permission denied; 的错误。解决此问题的方法是unset TMPDIR(我认为,将导致/tmp使用此方法),因为指定的TMPDIR是特定于旧用户的,而当前用户不可写。

您没有说您是否正在使用su或进行任何其他用户切换,并且该错误消息没有提到权限被拒绝,但是...


谢谢你的建议。我尝试将$ TMPDIR的位置更改为/ tmp。我现在却得到一个指向/ tmp / vzTkbXD / 0的错误。
Michael Barton'9

1
试试吧unset TMPDIR。那是什么错误呢?如果消息未真正显示出来,请运行sudo fs_usage MacVim(请注意,指定的进程必须已经在运行),并注意其open()调用中的errno是什么。
凯文·里德

感谢您提出的继续为我解决问题的建议,我们深表感谢。我尝试取消设置$ TMPDIR,但这也不能解决错误。不幸的是,我对fs_usage命令不熟悉,并且无法在fs_usage输出中为打开的进程生​​成错误号。如果有用,我将fs_usage的完整输出粘贴到这里-cl.ly/5c01de97b2276a73b569
Michael Barton 2010年

0

Vim试图打开交换文件,您是否尝试过修复权限?


1
谢谢你的建议。我刚刚运行了两次磁盘实用程序的修复权限,但是仍然遇到相同的问题。
Michael Barton 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.