Vim错误:运行某些命令时无法打开文件/tmp/.*需要临时文件

时间:2013-10-31 02:57:45

标签: vim

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

4 个答案:

答案 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"