Gentoo,vim版本7.3.762
问题:
当vim实例已经运行了很长时间(比如2小时)时,发生了 ONLY 。然后我在插件:Gstatus
中运行了一些需要fugitive
等临时文件的命令,我会收到错误:
can't open file /tmp/RANDOM_NAME
我无法弄清楚造成这种情况的原因。它与操作系统的自动清洁策略有什么关系吗?
因为我不仅在运行fugitive
命令时遇到了这个问题,而且还遇到了以下函数:
" Use ranger as vim's file chooser
fun! RangerChooser()
silent !ranger --choosefile=/tmp/chosenfile $([ -z '%' ] && echo -n . || dirname %)
if filereadable('/tmp/chosenfile')
exec 'edit ' . system('cat /tmp/chosenfile')
call system('rm /tmp/chosenfile')
endif
redraw!
endfun
答案 0 :(得分:10)
我遇到了这个问题,因为我最近将我的shell从fish
更改为bash
。在我的vimrc
中更改我的shell修复了问题:
set shell=/bin/bash
答案 1 :(得分:2)
我知道fugutive插件使用tempname()内部vim函数。此函数返回Unix样式系统上/ tmp目录中唯一文件名的文件路径。如果目录不再存在,则会发生此错误。我不确定这是你遇到的问题,但需要检查。
如果您输入:echo isdirectory(fnamemodify(tempname(), ":p:h"))
并返回0,请查看:call mkdir(fnamemodify(tempname(), ":p:h"))
是否会导致问题消失。
答案 2 :(得分:1)
我知道这是一个老线程。如果它可以帮助某人,仍然发布。
我最近在我的系统上遇到了这个错误。文件名的格式为“/ tmp //结果,在我启动vim实例后,/ tmp /目录已经被清理了,这个实例已连续运行了几天。
快速mkdir /tmp/<random-dir-name>
解决了问题,无需重新启动vim。
答案 3 :(得分:0)
将此添加到您的vimrc文件中,并在您的家庭文件夹中创建文件夹.tmp
let $TMPDIR = $HOME."/tmp"