No tengo una máquina con Windows, pero pude reproducir y aislar este problema en un sistema Mac OS X 10.6.
O crear C:\TMP
o C:\TEMP
(:help 'directory'
dice que ambos están en el valor predeterminado de la opción directory
en Windows construye de Vim), o añadir un directorio existente al valor de la opción directory
.
Utilizo un directorio temporal específico de Vim en mi directorio de inicio (de nuevo, no aparece Windows aquí) y agrego dos barras diagonales (~/tmp/.vim-swaps//
). Este tipo de configuración centraliza los archivos de intercambio pero les da nombres únicos basados en los directorios de los archivos que se están editando. Consulte "Ventajas" y "Desventajas" en :help :swapname
, así como "si un directorio finaliza en dos separadores de ruta" en el bit :help 'directory'
.
Uso ^=
anteponer su directorio (de modo que siempre se utiliza, si es que existe):
set directory^=C:\\some\\existing\\directory//
O bien, utilizar +=
para añadir el directorio (de modo que sólo se utiliza si existe y no existen otros directory
entradas aplicables):
set directory+=C:\\some\\existing\\directory//
Charles’ answer sugiere que $TMP
(una referencia a una variable de entorno) podría ser un buen valor para Windows:
set directory+=$TMP//
La causa está relacionada con el valor predeterminado de la opción directory
combinado con el nombre de ruta del archivo de índice ‘pseudo’ :Gdiff
‘s.
El tampón para el lado de índice de una vista :Gdiff
utiliza una ruta especial que se parece a fugitive:///path/to/repository/.git//0/path/to/file/under/repository
(capturas de fugitivos lee y escribe a los tampones así designados y los redirige al índice invocando Git comandos “fontanería”).
La primera entrada en directory
es generalmente .
. Esto significa que Vim intentará colocar el archivo de intercambio en el mismo directorio que el archivo editado (es decir, foo/bar.txt
intentará usar foo/.bar.swp
). Si no se puede crear este archivo de intercambio preferido, se intentarán las entradas siguientes desde directory
.
Con .
como la primera directory
, el archivo de intercambio preferido para fugitive:///path/to/repository/.git//0/path/to/file/under/repository
será fugitive:///path/to/repository/.git//0/path/to/file/under/.repository.swp
. Los principales componentes de este nombre de ruta (fugitive:
, path
, to
, etc.) probablemente no existan, por lo que Vim pasará a la siguiente entrada desde directory
. Si ninguna de las otras entradas directory
se puede utilizar para crear archivos de intercambio (por ejemplo, no existen), entonces obtiene el error E302.
I fue capaz de reproducir su problema en un sistema Unix-y mediante el uso de set directory=.,~/no-such-dir,/var/no-such-dir,/no-such-dir
(es decir, tomando el valor Unix predeterminado y el cambio de las apariciones de tmp
-no-such-dir
). Ninguno de los directorios "no-tal-dir" realmente existió. Obtuve el mismo error cuando uso :Gdiff
.
:help :set^=
sólo se dice “add”, pero el código de muestra que set listopt^=…
antepone similar a cómo set listopt+=…
APPENDs (ya que este último está documentado que hacer). Ambos deben insertar comas automáticamente según sea necesario (aunque puede haber errores en esta área).
Tengo el mismo * _exact_ * mismo problema, por favor, háganos saber si/cómo se resuelve esto. – Charles