繁体   English   中英

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

[英]Vim error: can't open file /tmp/.* when run some commands need temporary files

Gentoo,vim版本7.3.762

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

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

我遇到了这个问题因为我最近把我的贝壳从fish变成了bash 在我的vimrc更改我的shell修复了问题:

set shell=/bin/bash

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

如果键入:echo isdirectory(fnamemodify(tempname(), ":p:h"))并返回0,请查看:call mkdir(fnamemodify(tempname(), ":p:h"))导致问题走开。

我知道这是一个老线程。 仍然发布,以防它有助于某人。

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

一个快速的mkdir /tmp/<random-dir-name>修复了这个问题而无需重新启动vim。

将其添加到您的vimrc文件中,并在您的home foler中创建文件夹.tmp

let $TMPDIR = $HOME."/tmp"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM