Pregunta:
ACTUALIZACIÓN: He probado tanto la solución :set noswapfile swapfile
como la :e!
solución y el archivo de intercambio es mejor porque retiene el historial de deshacer incluso para archivos grandes, en este caso significa más de 1,5 MB. Por alguna razón :e!
no mantiene el historial de deshacer en esos casos, aunque lo mantiene en el caso normal (por ejemplo, por debajo de 100 KB). La solución del swapfile
me parece que ahora funciona bajo cualquier circunstancia, lo cual es muy impresionante.
Una pregunta un poco extraña: ¿Cómo puedo deshacerme o dejar atrás el mensaje de error "E297: Error de escritura en el archivo de intercambio"? Estoy ejecutando GVim cuando esto sucede y no quiero verme obligado a cerrarlo y volver a abrir un nuevo GVim porque no quiero perder todos mis búferes abiertos e idealmente me gustaría mantener todo mi historial de deshacer en cada archivo también, pero incluso una solución en la que pierda el historial de deshacer sería una mejora. Tengo una solución limitada en este momento anotada en la parte inferior y estoy buscando algo un poco mejor …
¿Por qué querría ignorar tal error? Una buena pregunta: estoy ejecutando GVim en una máquina virtual y lo tengo abierto en un archivo en el sistema de archivos "host" en lugar del propio sistema de archivos de la VM y "suspendo" la VM. Después de regresar de la suspensión, cada ventana de GVim abierta en un archivo del sistema host dará este mensaje. Entonces, el mensaje evidentemente se debe a la desconexión del sistema de archivos del host que tiene que ocurrir cuando se suspende la VM. GVim, obviamente, piensa que todavía tiene un descriptor de archivo quizás válido y tal cuando no lo tiene.
Entonces, la forma en que surge el error no es nada alarmante y solo necesito o quiero una forma de superarlo sin tener que cerrar GVim y volver a abrirlo. Por ejemplo, muchas veces podría tener este GVim abierto con muchos búferes y muchas cosas sucediendo. No quiero que me obliguen a cerrar toda la sesión de GVim debido a este único error, o incluso a cerrar todos los búferes abiertos en el sistema de archivos del sistema host. Cuando ocurre el error, es bastante molesto y aparece cada pocos momentos.
Lo que intenté hasta ahora es hacer :e
en el mismo archivo, con la esperanza de que sea como actualizar el sistema de archivos, y eso no eliminó el error.
También probé una especie de opción nuclear :bw
para deshacerme del búfer donde ocurre esto y eso funciona, pero como digo, idealmente me gustaría mantener la sesión en el mismo estado tanto como sea posible, así que cerrando los búferes de bajada tampoco es ideal. Digamos que tengo GVim abierto en 10 archivos en el sistema host. Si tengo que cerrar todos los búferes, entonces es tan malo como tener que cerrar GVim por completo.
Todo esto se aplica también a la línea de comando Vim, y estoy usando la versión 7.4 en Linux.
Respuesta:
Intentaría deshabilitar globalmente los archivos de intercambio y luego volver a habilitarlos para todos los búferes. Algo como esto:
:bufdo :set noswapfile swapfile
(Es posible que desee verificar si el búfer actual tiene un archivo de intercambio habilitado antes de restablecer esta opción).