2012-06-14 15 views
16

Incluyo el mismo .vimrc entre las máquinas que tienen instalados tanto Vim 7.2 como 7.3. Las máquinas con Vim 7.2 se quejan de mis opciones de 7,3 específicas cada vez que abro un archivo:Ignorar errores de "opción desconocida" en vimrc

Error detected while processing /home/spiffytech/.vimrc: 
line 72: 
E518: Unknown option: rnu 
line 73: 
E518: Unknown option: undofile 
line 74: 
E518: Unknown option: undodir=/tmp 
line 75: 
E518: Unknown option: cryptmethod=blowfish 
Press ENTER or type command to continue 

¿Cómo puedo hacer que Vim ignorar estos errores y no me pedirá que pulsar enter cada vez que abro los archivos?

Respuesta

10

Wrap las nuevas opciones en:

if version >= 703 
    set rnu ... 
endif 

consulte la ayuda para v:version para obtener más información sobre el número de versión a utilizar:

         *v:version* *version-variable* 
v:version  Version number of Vim: Major version number times 100 plus 
       minor version number. Version 5.0 is 500. Version 5.1 (5.01) 
       is 501. Read-only. "version" also works, for backwards 
       compatibility. 
       Use |has()| to check if a certain patch was included, e.g.: > 
         if has("patch123") 
<    Note that patch numbers are specific to the version, thus both 
       version 5.0 and 5.1 may have a patch 123, but these are 
       completely different. 
+0

que funciona. Definitivamente, tenga cuidado al configurar el número de versión. Me tomó un tiempo leerlo lo suficiente para ver que es * no * simplemente "versión * 100" – spiffytech

+0

Sí, eso puede ser complicado, pero se acostumbrará. Prefiero describirlo en un sentido de concatenación de cadenas, en lugar de hacer matemáticas. Tenga en cuenta que esto se usa en muchos otros lugares. Perl, por ejemplo, usa una sintaxis similar con ['use'] (http://perldoc.perl.org/functions/use.html). Debes 'usar 5.010;' para usar las características de perl '5.10', que no es' 5.1'. Es por eso que lo usan no en el sentido decimal, de lo contrario crearía alguna ambigüedad. – sidyll

+2

Es mejor probar la característica específica que la versión, ya que se podría compilar una versión específica sin la característica que está buscando. – cpbills

3

En su .vimrc, puede probar contra la versión de Vim que está ejecutando.

Ver help v:version

if v:version >= 703 
    "do something 
    set rnu 
    set undofile 
    ... 
endif 

corresponde a Vim 7.3 (que no es realmente intuitivo ...)

0

Yo diría que esta pregunta no ha sido respondida. Considera una Session.vim creada en la computadora A que tiene la última versión de vim. En el control de fuente cuando otra computadora B intenta abrir Session.vim, los errores se desencadenan. No tiene sentido tener que ajustar manualmente un número de versión para lo que debería ser un proceso automatizado. Con este comportamiento, la nueva versión debería incluir automáticamente un nuevo comando en un número de versión al guardar una sesión, algo que 7.3 no hace.

19

Puede valer la pena hacer una comprobación más detallada de las características reales admitidas en lugar de versiones.

ej .:

if has('persistent_undo') 
    set undofile 
    set undodir=/tmp 
endif 

" Some options can only be checked with exists('+option'); I'm not sure why 
if exists('+relativenumber') 
    set rnu 
endif 

if has('cryptv') 
    set cryptmethod=blowfish 
end 
3

puede pasar por alto cualquier error con silent! ..., como silent! set undofile

7

A veces es una opción legítima, pero no está disponible en el entorno actual. Por ejemplo:

$ vi 
Error detected while processing /home/username/.vimrc: 
line 9: 
Unknown option: indentexpr= 

Para probar si existe una opción o no, y evitar un error si no está disponible:

if exists("&indentexpr") 
    :set indentexpr= 
endif 
+1

Esta es la mejor manera de resolver el problema. –

+0

Esto no juega con los números de versión. – iltempo

Cuestiones relacionadas