2011-05-01 26 views
62

Varios usuarios en this epic question poner lo siguiente en el .vimrc:En un .vimrc, ¿`set nocompatible` es completamente inútil?

" Necesary for lots of cool vim things 
set nocompatible 

Pero ¿es realmente necesario? A partir de los documentos:

'compatible' 'cp' 
    boolean (default on, off when a |vimrc| or |gvimrc| file is found) 

Si set nocompatible va en un .vimrc, eso significa que existe un archivo .vimrc, aparentemente por lo que es inútil.

+0

Parece ... – luqui

+0

No: arregla varios errores con el modo de inserción y la tecla de borrar para mí en mi caja rhel5 – Stephan

Respuesta

49

Si es el vimrc de todo el sistema, esta opción no estará desactivada. Entonces, si está cambiando vimrc en todo el sistema y lo quiere, debe configurarlo.

Desde la sección de documentación (el énfasis es mío) *compatible-default*:

Cuando se inicia Vim, el 'compatible' opción está activada. Esto se usará cuando Vim inicie sus inicializaciones. Pero tan pronto como un archivo vimrc usuario se encuentra, o un archivo vimrc en el directorio actual , o la "VIMINIT" está ajustado variable de entorno, será se pondrá a 'nocompatible'.

Otra diferencia es que la configuración explícita 'no compatible' anula la llamada a vim con el -C flag.

En cualquier otro escenario, sí, establecer 'no compatible' en su vimrc es un noop.

Al final creo que es solo una cuestión de "mejor prevenir que lamentar".

+3

+1 Una vez más, el mundo entero * no está * mal. : \ – ClosureCowboy

+1

Maldita sea, no se pudo vincular directamente a la bandera '-C' Al menos en mi navegador (Chrome 10, Windows 7) salta a la bandera '-c'. Entonces, me vinculé al '-D' que está justo arriba. :( –

+0

': Conjunto nocompatible' en .vimrc que sí parece que cambiar algunos ajustes, por ejemplo, implica':. Fijar noshowcmd' no sé por qué, aunque –

5

Estaba usando vim en Cygwin en una máquina virtual Windows y cada vez que estaba en modo Insertar, presionar las teclas de flecha daría lugar a la impresión vim "A", "B", "C" o "D" en la pantalla de desplazamiento Encontré un foro que decía que poner vim en modo no compatible lo arreglaría. Afortunadamente, lo hizo.

Puse "set nocompatible" en mi archivo ~/.vimrc y el problema persiste. Entonces quizás no sea 100% inútil.

+6

No es necesario poner nada en '~ /.. vimrc'. La sola existencia de ese archivo pondrá a vim en el modo * no compatible. Pruébelo, haga una copia de seguridad de su .vimrc 'mv ~/.vimrc ~/.vimrc.bak' actual y cree uno vacío' touch ~/.vimrc ... 'vim Ahora abierto y ver lo que sucede –

+6

efectos secundarios Oh, cómo te apreciamos – Dan

+0

@JohnnyBaloney Bueno, te puedo decir "lo que sucede" aquí en Ubuntu lo retsigam dicho también es válido para esta distro:. sin' set nocompatible', vi es una pesadilla para navegar con las teclas del cursor. Cuando probé tu testcase, al instante tuve la misma pesadilla con ese .vimrc vacío. PERO has estado en lo cierto durante todo el proceso :-) __Ver respuesta extra__ sobre mi hallazgos recientes – syntaxerror

14

Muchas personas comparten sus archivos .vimrc en GitHub y algunas veces probaré la configuración sin reemplazar mi archivo .vimrc. vim me permite hacer esto con la bandera -u.

vim -u test_vimrc 

De vim ": ayudar a nocompatible"

(Nota: Esto no sucede para el vimrc de todo el sistema o archivo gvimrc, ni para un archivo dado con el | -u | argumento).

Esto significa que si usted comparte su .vimrc con alguien y utiliza -u para cargar el archivo, Vim no se configura el mismo que si el archivo se denomina .vimrc y situado en su directorio .

+3

Este es un punto muy importante. Recientemente aprendí esto de la manera difícil. Si usa -u, por defecto compatible está activado. Como resultado, vim -u ~/.vimrc en realidad no es lo mismo que dejar que vim cargue su ~/.vimrc por sí solo, a menos que agregue el "set nocompatible". – Dan

+0

Los archivos de configuración de Vim sin incompatible incluidos se pueden cargar con 'vim -Nu test_vimrc' ya que -N especifica el modo no compatible. –

0

Sobre la base de lo que Johnny se ha señalado anteriormente, simplemente me sorprendió cuando me encontré esto:

$ cat /usr/share/vim/vimrc.tiny 
" Debian system-wide default configuration Vim 
set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after 

set compatible 

ARGH !!!

No, yo NO esperaba eso. Debian (Debian inestable o también conocido como Ubuntu) hecho lo hace pusieron una pesadilla para sus usuarios reemplazando el valor predeterminado por conjunto compatible. espero que ahora se sabe por qué cuando usted está viniendo de FreeBSD, lo primero que tendría que hacer es anular la configuración de todo el sistema, poniendo una set nocompatible en su propia ~/.vimrc. Porque de lo contrario solo produciría letras en lugar de poder mover el cursor como solía hacerlo.

Creo que esta es una idea horrible. En otras palabras, esta línea set compatible debe ser eliminada del sistema vimrc.tiny tanto en Debian como en Ubuntu, porque molestará a los nuevos usuarios que no son (aún) tan inteligentes como saber cómo hacer funcionar las teclas del cursor. Son cosas como estas que los fuerzan a nano y otros debido a estos bloqueadores completamente sin sentido.

yo quiero hablar con el tipo que una vez que propaga este cambio en el archivo de recursos de todo el sistema en Debian. Y tal vez también a las personas que reconocieron su cambio al máximo.

Johnny tiene razón: en su PC privada, puede eliminar dicha línea del .vimrc del sistema (si existe), y tocar un .vimrc vacío en su $ HOME. Muchas gracias por señalar eso, mucho menos desorden de nuevo. Tenga en cuenta que debe tener que ~/.vimrc (aunque estén vacíos!) Que de lo contrario no será capaz de utilizar los cursores sin explícitamente poner en set nocompatible.

+0

Los comentarios en 'vimrc.tiny' explican que solo se obtiene al invocar vim como' vi', en cuyo caso tiene sentido que vim intente ser compatible con'vi'. Este archivo no se origina cuando ejecuta 'vim', y el archivo' vimrc' relacionado en el mismo directorio no los incluye.Todo esto se explica en los comentarios del archivo 'vimrc.tiny' que encontraste. –