2009-07-08 16 views
8

¿Hay alguna manera de desactivar las advertencias en VIM?Deshabilitar advertencia en VIM?

En particular, deseo desactivar la advertencia 12 cuando un archivo pasa de ser de solo lectura a escribible. Tengo un script que abre el archivo para editar de manera forzada, pero vim cree que el archivo ha cambiado y emite una advertencia.

Gracias

+0

Podría ser que a veces el archivo tiene en realidad cambiado? P.ej. si no tiene abierta la revisión de encabezado en VIM, un abrir para editar realmente intentaría reemplazar su archivo con el último. –

+0

El comando que estoy usando, 'p4 edit', no se sincronizará con una revisión diferente de ese archivo, sin indicarlo explícitamente. El archivo solo se cambiaría si me sincronizara explícitamente con Vim. –

Respuesta

6

añadir la siguiente línea a su archivo .vimrc:

conjunto AutoRead

Esto desactivará las advertencias de "sólo lectura para que permitan la escritura"

+1

Tenga en cuenta que esto tiene un efecto adicional: volver a leer el archivo. En el ejemplo de OP, esto no importa, pero en algunos casos es posible que solo desee suprimir la advertencia sin volver a leer el búfer. Autocmd para FileChangedRO y FileChangedShell puede lograr esto. – Charles

10

tengo el siguiente en mi .vimrc; solo deberías necesitar el segundo. Se hace eco del mensaje a la barra de estado en lugar de abrir un cuadro de diálogo.

autocmd FileChangedRO * echohl WarningMsg | echo "File changed RO." | echohl None 
autocmd FileChangedShell * echohl WarningMsg | echo "File changed shell." | echohl None 

Trate :help FileChangedShell para más información.

2

He estado usando FileChangedRO por un tiempo ahora para obtener automáticamente archivos al comenzar a editarlos y he encontrado que la advertencia W12 también es molesta. El problema es que la edición p4 actualiza los atributos del archivo para eliminar el indicador de solo lectura. Si como parte de la edición inicial también cambias el archivo, Vim ve esto como un conflicto ya que ya no es de solo lectura. Aquí está la solución que uso que es un poco más conservadora sobre el uso de FileChangedShell en caso de que el archivo haya sido cambiado externamente por algún otro motivo.

let s:IgnoreChange=0 
autocmd! FileChangedRO * nested 
    \ let s:IgnoreChange=1 | 
    \ call system("p4 edit " . expand("%")) | 
    \ set noreadonly 
autocmd! FileChangedShell * 
    \ if 1 == s:IgnoreChange | 
    \ let v:fcs_choice="" | 
    \ let s:IgnoreChange=0 | 
    \ else | 
    \ let v:fcs_choice="ask" | 
    \ endif 
+0

Esta es una hermosa solución, exactamente lo que estaba buscando, ¡gracias! – mrkj

Cuestiones relacionadas