Vim se queja de un archivo temporal al abrir archivos resaltados de sintaxis en Mac OS X

8

Cuando intento abrir un archivo (por ejemplo, test / test_sequence.rb) usando Vim o MacVim, aparece el siguiente error:

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

Esto parece solo restringido a archivos que tienen algún tipo de resaltado de sintaxis. Todavía puedo editar el archivo pero tengo que usar: w! para escribir los cambios la primera vez. Estoy usando vim en Mac OS X. Intenté buscar en Google este error sin suerte y esto se ha vuelto realmente frustrante. ¿Alguien podría ofrecer una solución para esto?

EDITAR: No obtengo este error al editar archivos LaTeX resaltados de sintaxis, pero sí con archivos Ruby resaltados de sintaxis.

Michael Barton
fuente

Respuestas:

6

Resulta que el problema estaba con el shell. Vim estaba tratando de usar / bin / screen como shell

set shell /bin/sh

En mi vimrc solucioné el problema.

Michael Barton
fuente
3
Solo presioné esto cuando cambié mi shell de inicio de sesión a fishshell. Gracias por el consejo :)
Yeraze
Lo mismo aquí, después de configurar el shell predeterminado para pescar, me pasó :)
imslavko
3
Bueno, tuvo que añadir: set shell=/bin/bash.
paldepind
para mí la sintaxis tenía que serset shell=/bin/sh
Ganesh Hegde
Pero todo esto me parece filetype = ruby-específico.
ThomasH
1

He descubierto que si usted suusa un usuario diferente, los procesos que intentan usar archivos temporales pueden producir un error como /var/folders/zO/zOCN9kiiGD4keWX3TWYEh++++TI/-Tmp-/vzTkbXD/0: permission denied; la solución para esto es unset TMPDIR(que, creo, hace /tmpque se use en su lugar), porque el TMPDIR especificado es específico para el usuario anterior y no puede ser escrito por el usuario actual.

No ha dicho si está utilizando suo cualquier otro cambio de usuario, y el mensaje de error no menciona el permiso denegado, pero ...

Kevin Reid
fuente
Gracias por la sugerencia. Intenté cambiar la ubicación de $ TMPDIR a / tmp. Sin embargo, ahora recibo un error que apunta a / tmp / vzTkbXD / 0.
Michael Barton
1
Intenta en su unset TMPDIRlugar. ¿Y cuál es el error? Si el mensaje realmente no lo muestra, ejecute sudo fs_usage MacVim(tenga en cuenta que el proceso con nombre ya debe estar ejecutándose ) y observe cuál es el error en su llamada open ().
Kevin Reid
Gracias por sus continuas sugerencias para tratar de resolver esto por mí, es realmente apreciado. Intenté desactivar $ TMPDIR pero esto tampoco resuelve el error. Desafortunadamente no estoy familiarizado con el comando fs_usage y no pude generar un número de error para el proceso abierto en la salida de fs_usage. He pegado la salida completa de fs_usage aquí si esto es de alguna utilidad - cl.ly/5c01de97b2276a73b569
Michael Barton
0

Vim está intentando abrir un archivo de intercambio, ¿ha intentado reparar los permisos?

Josh K
fuente
1
Gracias por la sugerencia. Acabo de ejecutar los permisos de reparación de la utilidad de disco dos veces, pero sigo viendo el mismo problema.
Michael Barton el