Vim错误:can';t运行某些命令时打开文件/tmp/*,这些命令需要临时文件
Gentoo,vim版本7.3.762 问题: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
只有当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
。在myvimrc
中更改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,但它确实适用!谢谢:)谢谢,我已经尝试解决此问题好几个小时了