Vim narzeka na plik tymczasowy podczas otwierania plików wyróżnionych składnią w Mac OS X


8

Kiedy próbuję otworzyć plik (np. Test / test_sequence.rb) za pomocą Vima lub MacVima, pojawia się następujący błąd:

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

Wydaje się, że jest to ograniczone tylko do plików z pewnego rodzaju podświetlaniem składni. Nadal mogę edytować plik, ale muszę użyć: w! zapisać zmiany za pierwszym razem. Korzystam z vima na Mac OS X. Próbowałem dużo googlingu z powodu tego błędu bez powodzenia i stało się to naprawdę frustrujące. Czy ktokolwiek mógłby to naprawić?

EDYCJA: Nie pojawia się ten błąd podczas edycji podświetlonych składni plików LaTeX, ale robię to z podświetlonymi składniami plikami Ruby.

Odpowiedzi:


6

Okazuje się, że problem dotyczył powłoki. Vim próbował użyć / bin / screen jako powłoki

set shell /bin/sh

W moim vimrc naprawiłem problem.


3
Po prostu uderz to sam, kiedy zmieniłem moją powłokę logowania na fishshell. Dzięki za podpowiedź :)
Yeraze

To samo tutaj, po ustawieniu domyślnej powłoki do połowu mi się to przydarzyło :)
imslavko,

3
Cóż, miał dodać: set shell=/bin/bash.
paldepind

dla mnie składnia musiała byćset shell=/bin/sh
Ganesh Hegde

Ale cała ta sprawa wydaje mi się typem pliku = ruby.
ThomasH

1

Odkryłem, że jeśli jesteś suinnym użytkownikiem, procesy próbujące użyć plików tymczasowych mogą powodować błąd podobny do /var/folders/zO/zOCN9kiiGD4keWX3TWYEh++++TI/-Tmp-/vzTkbXD/0: permission denied; naprawiono to w unset TMPDIR(co, jak sądzę, powoduje, że /tmpnależy go użyć), ponieważ podany TMPDIR jest specyficzny dla starego użytkownika i nie może być zapisywany przez bieżącego użytkownika.

Nie powiedziałeś, czy używasz, suczy w inny sposób zmieniasz użytkowników, a komunikat o błędzie nie wspomina o odmowie dostępu, ale ...


Dzieki za sugestie. Próbowałem zmienić lokalizację $ TMPDIR na / tmp. Zamiast tego pojawia się błąd wskazujący na / tmp / vzTkbXD / 0.
Michael Barton

1
Spróbuj unset TMPDIRzamiast tego. A jaki jest błąd? Jeśli komunikat naprawdę go nie pokazuje, uruchom sudo fs_usage MacVim(zauważ, że nazwany proces musi już być uruchomiony ) i zwróć uwagę na to, jakie jest errno w jego wywołaniu open ().
Kevin Reid,

Dziękuję za ciągłe sugestie, aby spróbować rozwiązać to dla mnie, to bardzo doceniane. Próbowałem rozbroić $ TMPDIR, ale to również nie rozwiązuje błędu. Niestety nie znam polecenia fs_usage i nie mogłem wygenerować numeru błędu dla otwartego procesu w wyjściu fs_usage. Wkleiłem tutaj pełne wyjście fs_usage, jeśli jest to przydatne - cl.ly/5c01de97b2276a73b569
Michael Barton

0

Vim próbuje otworzyć plik wymiany, czy próbowałeś naprawić uprawnienia?


1
Dzieki za sugestie. Właśnie uruchomiłem dwa razy uprawnienia do naprawy narzędzia dyskowego, ale nadal widzę ten sam problem.
Michael Barton,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.