Vim se plaint d'un fichier temporaire lors de l'ouverture de fichiers en surbrillance de syntaxe sur Mac OS X

8

Lorsque j'essaie d'ouvrir un fichier (par exemple test / test_sequence.rb) en utilisant Vim ou MacVim, j'obtiens l'erreur suivante:

"test/test_sequence.rb" 109L, 3697C
Vim(let):E484: Can't open file /var/folders/zO/zOCN9kiiGD4keWX3TWYEh++++TI/-Tmp-/vzTkbXD/0

Cela semble uniquement limité aux fichiers qui ont une sorte de mise en évidence de la syntaxe. Je peux toujours éditer le fichier mais je dois utiliser: w! pour écrire les modifications la première fois. J'utilise vim sur Mac OS X. J'ai essayé beaucoup de googler pour cette erreur sans chance et c'est devenu vraiment frustrant. Quelqu'un pourrait-il proposer un correctif pour cela?

EDIT: Je n'obtiens pas cette erreur lors de l'édition de fichiers LaTeX surlignés en syntaxe, mais sur les fichiers Ruby surlignés en syntaxe.

Michael Barton
la source

Réponses:

6

Il s'avère que le problème était avec le shell. Vim essayait d'utiliser / bin / screen comme shell

set shell /bin/sh

Dans mon vimrc résolu le problème.

Michael Barton
la source
3
Frappez juste ceci moi-même quand j'ai changé mon shell de connexion en fishshell. Merci pour l'astuce :)
Yeraze
Même chose ici, après avoir défini le shell par défaut pour pêcher, cela m'est arrivé :)
imslavko
3
Eh bien, il fallait ajouter: set shell=/bin/bash.
paldepind
pour moi, la syntaxe devait êtreset shell=/bin/sh
Ganesh Hegde
Mais le tout me semble spécifique à filetype = ruby.
ThomasH
1

J'ai constaté que si vous suutilisez un autre utilisateur, les processus qui essaient d'utiliser des fichiers temporaires peuvent produire une erreur comme /var/folders/zO/zOCN9kiiGD4keWX3TWYEh++++TI/-Tmp-/vzTkbXD/0: permission denied; le correctif pour cela est unset TMPDIR(ce qui, je pense, provoque /tmpl'utilisation à la place), car le TMPDIR spécifié est spécifique à l'ancien utilisateur et non accessible en écriture par l'utilisateur actuel.

Vous n'avez pas dit si vous utilisez suou tout autre changement d'utilisateur, et le message d'erreur ne mentionne pas l'autorisation refusée, mais ...

Kevin Reid
la source
Merci pour la suggestion. J'ai essayé de changer l'emplacement de $ TMPDIR en / tmp. À la place, j'obtiens une erreur pointant vers / tmp / vzTkbXD / 0.
Michael Barton
1
Essayez unset TMPDIRplutôt. Et quelle est l'erreur? Si le message ne l'affiche vraiment pas, exécutez sudo fs_usage MacVim(notez que le processus nommé doit déjà être en cours d'exécution ) et notez ce qu'est l'errno sur son appel open ().
Kevin Reid
Merci pour vos suggestions continues pour essayer de résoudre ce problème pour moi, c'est vraiment apprécié. J'ai essayé de supprimer $ TMPDIR mais cela ne résout pas non plus l'erreur.Malheureusement, je ne connais pas la commande fs_usage et je n'ai pas pu produire de numéro d'erreur pour le processus ouvert dans la sortie fs_usage. J'ai collé la sortie complète de fs_usage ici si cela est utile - cl.ly/5c01de97b2276a73b569
Michael Barton
0

Vim essaie d'ouvrir un fichier d'échange, avez-vous essayé de réparer les autorisations?

Josh K
la source
1
Merci pour la suggestion. Je viens d'exécuter les autorisations de réparation de l'utilitaire de disque deux fois, mais je vois toujours le même problème.
Michael Barton