2010-09-02 47 views
6

Hay un archivo particular en mi computadora que Vim insiste en abrir en modo solo lectura. Revisé los permisos en el archivo (tengo control total), y si lo hago: ¡w !, las escrituras ocurren perfectamente. Sin embargo, si abro el archivo con: eo desde NERDTree, el archivo se abre como de solo lectura. Todos los otros archivos que abro funcionan bien.¿Cómo abro un archivo en modo lectura/escritura en Vim?

Solo quiero saber cómo desactivar el modo de solo lectura en este archivo, antes o después de abrirlo.

Estoy en Windows, utilizando gVim

EDIT: quizás no sea un problema de permisos, ya que: w! funciona bien

+1

No sé qué sistema operativo de Windows específico está ejecutando, pero si está en Vista/Win7, ¿ha intentado ejecutar gVim como administrador (haga clic con el botón secundario y seleccione Ejecutar como administrador), luego vea qué sucede cuando Intenta guardar el archivo? – Dave

+0

¿Qué tipo de archivo es? ¿Donde está localizado? Algunas ubicaciones de archivos en el directorio de usuario se abrirán en solo lectura, y w! ni siquiera funcionará – Jess

+0

@Dave: estoy en XP, y lamentablemente, no puedo ejecutar como administrador, ya que estoy en el trabajo. –

Respuesta

-2

Simplemente fuerce la escritura del archivo utilizando: w !. Usted debe ser de oro

+1

Él ya dijo que puede hacerlo bien, pero simplemente no lo hace No quiero tener que hacer eso. :) – Dave

0

tal vez hay un ajuste de vim en el archivo para la carga de archivos como de sólo lectura:

Compruebe si hay una línea como: (sustituya el carácter de comentario de su archivo en lugar de //)

// vim: conjunto ro:

Vim busca estas configuraciones en la primera o las últimas 5 líneas del archivo.

+0

no parece que haya una línea como esta en el archivo. Sin embargo, no sabía que podía hacer esto con vim. –

0

Ha intentado: haga clic derecho -> Propiedades -> vea si el atributo 'solo lectura' está marcado?

5

El modo que le molesta está controlado por la opción de solo lectura. Para borrarlo, ingrese :set readonly! una vez que haya lanzado el editor.

2

En realidad, es puede ser un problema de permiso.

Acabo de abrir este caso en XP, con privilegios de administrador. Después de hacer que un archivo sea grabable (el atributo de solo lectura, clear, cygwin lo muestra como escribible), VIM todavía lo muestra como de solo lectura.

En mi caso, el problema estaba en permisos avanzados. En el Explorador de Windows, en el archivo, haga clic con el botón derecho para obtener Propiedades. En la pestaña General, el bit de solo lectura es claro. Ahora, yendo a la pestaña Seguridad, muestra que solo tengo permiso de lectura. Al hacer clic en el botón Avanzado, debajo de la pestaña Permisos, con mi cuenta de usuario seleccionada, se muestra que tengo Permisos especiales no heredados de ninguna parte, en lugar de "Control total" heredados del directorio que los contiene, como veo para mis otros archivos.

Una solución es hacer clic en Editar ... para editar los permisos en la pestaña Permisos. Sin embargo, es mucho más simple (al menos en el caso de que tenga privilegios de administrador) simplemente hacer: w! en VIM como otros han sugerido. Esto corrige los permisos del archivo para que se pueda escribir ("Control total").

(estoy claro cómo este archivo en particular terminó en este estado sólo lectura "especial". Dejando que a medida fuera del alcance de su pregunta.)

1

Los siguientes añadido a su vimrc hará que vim a cambie el archivo a solo lectura una vez editado.Esto funciona llamando a las ventanas attrib herramienta

"Change read/only files to read/write when they are edited 
au FileChangedRO * !start attrib -r % 
au FileChangedRO * :let s:changedRO = 1 
au FileChangedRO * :set noro 

"Don't ask about the modified read-only file 
au FileChangedShell * call s:HandleChangedROFile() 

function s:HandleChangedROFile() 
    if exists('s:changedRO') && s:changedRO == 1 
     let s:changedRO = 0 
     let v:fcs_choice='reload' 
    else 
     v:fcs_choice='ask' 
    endif 
endfunction 

Inspirado por: http://vim.wikia.com/wiki/Setting_file_attributes_without_reloading_a_buffer

0

La solución es bastante simple, esto sucede sólo si usted no tiene el permiso de escritura como usuario.

ir a la terminal y escriba el siguiente comando:

1] chmod u + wx nombre nombre de archivo es el nombre del archivo que está intentando editar.

Cuestiones relacionadas