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.

Michael Barton
źródło

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.

Michael Barton
źródło
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 ...

Kevin Reid
źródło
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?

Josh K.
źródło
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,