Vim жалуется на временный файл при открытии файлов с выделенным синтаксисом в Mac OS X


8

Когда я пытаюсь открыть файл (например, test / test_sequence.rb) с помощью Vim или MacVim, я получаю следующую ошибку:

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

Это кажется ограниченным только для файлов, которые имеют некоторую подсветку синтаксиса. Я все еще могу редактировать файл, но я должен использовать: w! написать изменения в первый раз. Я использую vim на Mac OS X. Я попытался много погуглить эту ошибку, но безуспешно, и это стало очень неприятно. Кто-нибудь может предложить исправить это?

РЕДАКТИРОВАТЬ: я не получаю эту ошибку при редактировании синтаксиса выделенных файлов LaTeX, но я делаю с синтаксисом выделенных файлов Ruby.

Ответы:


6

Оказывается, проблема была с оболочкой. Vim пытался использовать / bin / screen в качестве оболочки

set shell /bin/sh

В моем vimrc исправлена ​​проблема.


3
Просто поразите себя, когда я изменил свою регистрационную оболочку на fishshell. Спасибо за совет :)
Yeraze

То же самое здесь, после установки оболочки по умолчанию для
рыбалки,

3
Ну, это должно было добавить: set shell=/bin/bash.
paldepind

для меня синтаксис должен был бытьset shell=/bin/sh
Ганеш Хегде

Но все это кажется filetype = ruby-специфичным для меня.
ThomasH

1

Я обнаружил, что если вы обращаетесь suк другому пользователю, процессы, пытающиеся использовать временные файлы, могут выдавать ошибку вроде /var/folders/zO/zOCN9kiiGD4keWX3TWYEh++++TI/-Tmp-/vzTkbXD/0: permission denied; исправление для этого - к unset TMPDIR(который, я думаю, заставляет /tmpиспользоваться вместо этого), потому что указанный TMPDIR специфичен для старого пользователя и не доступен для записи текущим пользователем.

Вы не сказали, используете ли вы suили какое-либо другое переключение пользователей, и в сообщении об ошибке не упоминается отказ в разрешении, но ...


Спасибо за предложение. Я попытался изменить расположение $ TMPDIR на / tmp. Однако вместо этого я получаю ошибку, указывающую на / tmp / vzTkbXD / 0.
Майкл Бартон

1
Попробуй unset TMPDIRвместо этого. А в чем ошибка? Если сообщение на самом деле не показывает его, запустите sudo fs_usage MacVim(обратите внимание, что именованный процесс уже должен быть запущен ) и обратите внимание на значение errno при вызове open ().
Кевин Рейд

Спасибо за ваши дальнейшие предложения, чтобы попытаться решить эту проблему для меня, это очень ценится. Я попытался сбросить $ TMPDIR, но это тоже не устраняет ошибку. К сожалению, я не знаком с командой fs_usage и не смог выдать номер ошибки для процесса open в выводе fs_usage. Я вставил сюда полный вывод fs_usage, если он вам нужен
Майкл Бартон,

0

Vim пытается открыть файл подкачки, вы пытались восстановить разрешения?


1
Спасибо за предложение. Я только дважды запускал разрешения на восстановление дисковой утилиты, но все еще вижу ту же проблему.
Майкл Бартон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.