2012-08-02 5 views
25

Ich habe mich schon eine Weile umgesehen.vim scripting, wenn die vim-Version <7.3 ist

Ich möchte eine Zeile zu einer VIM-Plugin-Datei hinzufügen, die es deaktivieren würde, wenn es auf einer nicht unterstützten Version von VIM ausgeführt wird.

ich von irgendwo vergessen, dass es so etwas wie das geht:

if version > 730 
    "plugin code goes here 
endif 

aber das scheitern.

+0

Warum du so etwas tun nicht: wenn Version <730 Finish endif Andernfalls - Hinzufügen Sie Plugin-Code. (Aus einer der VIM-Dateien kopiert :) – hari

Antwort

41

Das Versionsschema ist anders; Vim 7.3 ist 703, nicht 730.

Auch für die Übersichtlichkeit würde ich empfehlen, v:version (das ist eine spezielle Variable Vim).

Oft ist es auch besser, nach der Verfügbarkeit von Features zu suchen (z. B. exists('+relativenumber')) als nach der Vim-Version zu testen, die die Funktion eingeführt hat, da Vim mit verschiedenen Funktionen individuell kompiliert werden kann.

Schließlich Plugins tun typischerweise der Wache umgekehrt:

if v:version < 703 
    finish 
endif 
" Plugin goes here. 

Und es ist eine gute Praxis, diese mit einer Aufnahme Wache zu kombinieren. Auf diese Weise können einzelne Benutzer eine (systemweit) installiert Plugin deaktivieren:

" Avoid installing twice or when in unsupported Vim version. 
if exists('g:loaded_pluginname') || (v:version < 700) 
    finish 
endif 
let g:loaded_pluginname = 1 
+1

In meinem Fall (und warum ich nach dieser Frage und Antwort suchte), scheint es, dass die 'j' Option zu' formatoptions' in 7.4 hinzugefügt wurde und meine .vimrc benötigt über diese Grenze hinaus arbeiten. (Srsly Apple, immer noch 7.3?) –

+0

Wie v: Version Wert zu zeigen? Ich habe 'set v: version?' Versucht, aber gescheitert –

+1

@DanielYCLin ': set' ist für Vim _options_; Dies ist eine spezielle integrierte _variable_. Sie zeigen den Wert (wie bei jedem anderen Vimscript-Ausdruck) über ': echo v: version' (oder': echomsg'). –