2013-10-31 5 views
5

のGentoo、vimのバージョンを必要としないオープンファイル/tmp/.* 7.3.762Vimのエラー:することができます実行するいくつかのコマンドは、一時ファイル

問題:
ONLYはvimのインスタンスがために走ってきたときの状況長い時間(2時間のような)。その後、私はプラグインfugitive:Gstatusのような一時ファイルを必要とするいくつかのコマンドを実行し、私はエラーを取得します:

can't open file /tmp/RANDOM_NAME 

私は理由がこれを引き起こしたかを把握することはできません。それはオペレーティングシステムのオートクリーン戦略と関係がありますか?
私はfugitiveのコマンドを実行しているときだけではなく、この問題が発生するだけでなく、以下の機能なので:私はfugutiveプラグインがTEMPNAME()内部vimの機能を使用しています知っている

" 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

folerあなたの家であなたのvimrcファイルにこれを追加し、フォルダの.tmpを作成/ tmpが、私はこれが発生しました? – user2864740

+0

いっぱいに仮想ファイルシステムでありますvimセッションでは何らかの不安定な状態にあるようですが、常にVimを再起動してしまい、他のvim sessiには影響しません同じ時間に走っている。 'system()'自体には何か問題があります。 ':echo system( 'ls')'でエラーを再現できます。 –

答えて

8

私は最近シェルをfishからbashに変更したため、この問題が発生しました。私のvimrc固定問題に私のシェルを変更する:

set shell=/bin/bash

2

。この関数は、Unixスタイルのシステムで/ tmpのディレクトリにある一意のファイル名のファイルパスを返します。このエラーは、ディレクトリが存在しなくなった場合に発生します。私はこれがあなたが何をしているのかはわかりませんが、それは何かを確認することです。

:echo isdirectory(fnamemodify(tempname(), ":p:h"))と入力して0を返した場合は、:call mkdir(fnamemodify(tempname(), ":p:h"))が問題を解決するかどうかを確認してください。

+0

悲しいことに、最近この問題が再び起こったのはわかりません〜(よく私のLinuxカーネルを3.8から3.10.7にアップグレードしました)。 vimがまだそれを使用している間にOSが一時ファイルを消去する可能性があるかどうか疑問に思っていました。興味深いもの: –

+0

私はそれを助けるとは思っていませんでしたが、 ':mkdir(fnamemodify(tempname()、":p:h "))'を呼び出すと問題が解決します。 ':call system( 'rm -rf'。fnamemodify(tempname()、 ':p:h'))'でvimの下からtmpパスを削除することで、vimをこの壊れた状態にすることができるようです。 –

1

私は、これは古いスレッドです知っています。場合によっては、誰かを助けるために投稿してください。

最近私のシステムでこのエラーが発生しました。ファイル名は "/ tmp //となっています。私はvimインスタンスを起動した後に/ tmp /ディレクトリが消去されていました。これは数日間連続して実行されていました。

A quick mkdir /tmp/<random-dir-name> Vimを再起動しなくても問題。

0

はたぶん

let $TMPDIR = $HOME."/tmp" 
関連する問題