Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim错误:can';t运行某些命令时打开文件/tmp/*,这些命令需要临时文件_Vim - Fatal编程技术网

Vim错误:can';t运行某些命令时打开文件/tmp/*,这些命令需要临时文件

Vim错误:can';t运行某些命令时打开文件/tmp/*,这些命令需要临时文件,vim,Vim,Gentoo,vim版本7.3.762 问题: 只有当vim实例运行了很长时间(比如2小时)时才会发生。然后,我运行了一些需要临时文件的命令,如pluginsensitive中的:Gstatus,我将得到一个错误: can't open file /tmp/RANDOM_NAME 我不知道是什么原因造成的。这与操作系统的自动清理策略有关吗? 因为我不仅在运行逃犯命令时遇到了这个问题,而且在下面的函数中也遇到了这个问题: " Use ranger as vim's file chooser fu

Gentoo,vim版本7.3.762

问题:
只有当vim实例运行了很长时间(比如2小时)时才会发生。然后,我运行了一些需要临时文件的命令,如plugin
sensitive
中的
:Gstatus
,我将得到一个错误:

can't open file /tmp/RANDOM_NAME
我不知道是什么原因造成的。这与操作系统的自动清理策略有关吗?
因为我不仅在运行
逃犯
命令时遇到了这个问题,而且在下面的函数中也遇到了这个问题:

" 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

我知道fugutive插件使用tempname()内部vim函数。此函数返回Unix样式系统上/tmp目录中唯一文件名的文件路径。如果目录不再存在,则可能发生此错误。我不确定这是你遇到的问题,但需要检查一下


如果键入
:echo isdirectory(fnamemodify(tempname(),“:p:h”)
并返回0,请查看
:call mkdir(fnamemodify(tempname(),“:p:h”)
是否导致问题消失。

我遇到这个问题,因为我最近将shell从
fish
更改为
bash
。在my
vimrc
中更改shell修复了该问题:


set shell=/bin/bash
我知道这是一个旧线程。仍然张贴,以防它帮助别人

我最近在我的系统上遇到了这个错误。文件名的格式是“/tmp/”,事实证明,在我启动vim实例后,/tmp/目录已经被清理,该实例已经连续运行了几天


快速
mkdir/tmp/
修复了该问题,而无需重新启动vim。

将其添加到vimrc文件中,并在主文件夹中创建folder.tmp

let $TMPDIR = $HOME."/tmp"

也许/tmp是一个填满的虚拟文件系统?我也遇到过这种情况。它似乎是vim会话中的某种不稳定状态。它总是随着vim重新启动而消失,并且不会影响同时运行的其他vim会话。
system()
本身有问题。我可以使用
:echo system重现错误('ls')
当它发生时。遗憾的是,我最近没有看到这个问题再次发生(我已经将我的linux内核从3.8升级到了3.10.7)。我想知道,在vim仍在使用temp文件时,操作系统是否有可能清理temp文件。有趣的是,我没想到它会有帮助,但是
:调用mkdir(fnamemodify(tempname(),“:p:h”))
修复了该问题。看起来您还可以通过使用
从vim下删除tmp路径使vim进入此中断状态:call system('rm-rf'.fnamemodify(tempname(),':p:h'))
。我在vim中看到一个错误,因为一个扩展无法打开tmp文件。按照此回答中提到的设置shell为我修复了它。给我造成此问题的扩展名为airline,我看到的错误是:
在处理函数airline#extensions#branch#get#u head[1]时检测到错误
…但现在一切都解决了。请在此处提及,以防其他人搜索。谢谢!你救了我一天。谢谢!没想到这也适用于windows,但它确实适用!谢谢:)谢谢,我已经尝试解决此问题好几个小时了