2009-03-11 30 views
15

Llevo un vimrc a todas las máquinas en las que trabajo y naturalmente contiene opciones que no están presentes en el viejo vi.Cómo detectar vi (no vim) en .vimrc?

Si accidentalmente inicio una sesión vi en una máquina donde vi no es un alias de vim y/o vim no está instalado, vi lee vimrc y arroja un montón de molestos errores para avisarme que esa opción tal y tal es sin apoyo.

Sé que siempre puedo escribir "vim" en lugar de "vi" y configurar la variable EDITOR en vim (para visudo, etc ...), pero ¿hay alguna línea que pueda agregar a la parte superior de la vimrc que ¿Saldrá del script anticipadamente si el archivo es leído por vi?

Respuesta

34

Si vi no es en realidad un enlace a vim, no debe leer .vimrc, debe decir .exrc. El hecho de que esté leyendo .vimrc indica que en realidad es una versión anterior de vim. Si ese es el caso, se puede utilizar el vim "si" construir nuevas características entre paréntesis, así:

:if version >= 500 
: version-5-specific-commands 
:endif 

Tipo:

:help if 

cuando en vim para obtener más información.

+0

Tipo: Versión de averiguar qué versión de Vim es. –

+0

@anon, gracias, funcionó, pero cuando hago 'vi --version', muestra' VIM - Vi IMproved 7.2 (2008 Ago 9, compilado el 17 de febrero de 2012 10:24:10) 'por lo que es un vi de VIM compilado con características apagado. Como puedo ver más adelante en la descripción 'Versión pequeña sin GUI. ¿Pero por qué funcionó? Me estoy perdiendo de algo. – garg10may

6

Non-vim no lee un .vimrc, está buscando un .exrc. Puede detectar versiones anteriores de vim usando "if version> = 500"

12

Si desea obtener más información sobre sus cheques, también puede verificar características individuales.

tengo esto en mi .vimrc:

if has("eval") 
    " Syntax stuff 
    let java_highlight_all=1 
endif 


if has("autocmd") 
    " Buffers 
    autocmd BufEnter * cd %:p:h 
endif 
3

"vi" lee vimrc porque está seguro de Vim compilado con el nombre "vi". Y lo más probable es compilado "Vi a ser muy compatibles", por lo que puede tratar de comprobar característica "compatible" para detectar "vi":

if !has("compatible") 
    let g:loaded_matchparen=1 
    syntax off 
endif 
Cuestiones relacionadas