Sinon endif oneliner


11

J'ai cet oneliner dans mon vimrcmais ça ne marche pas:

if has("patch-7.4.710") | set listchars+=space:· else | set listchars+=trail:· | endif

VIM dit:

E518: Unknown option: else

Pouvez-vous m'aider ?

Réponses:


19

Vous devez en mettre un autre |avant elsesinon vim pensera que votre commande est set listchars+=space:· elseau lieu de deux commandes distinctes. C'est pourquoi vous avez reçu le message d'erreur: elseest une option inconnue pour la commande set.

La syntaxe correcte est la suivante:

if has("patch-7.4.710") | set listchars+=space:· | else | set listchars+=trail:· | endif

Je me battais pour où placer le |, avant ou après le else? Maintenant, je maintenant c'est à la fois :-D. Merci beaucoup :) !
SebMa

2
@SebMa: Pensez à la façon dont vim analyserait votre code s'il était écrit sur plusieurs lignes: instruction 1 if has("patch-7.4.710"), instruction 2 set listchars+=space:·, instruction 3 else, instruction 4 set listchars+=trail:·et dernière instruction endif. Comme les |instructions sont utilisées pour séparer les instructions, il est logique d'en mettre une avant elseet une après :)
statox

1
C'est logique tant qu'on connaît la langue. En C, nous utilisons ;pour séparer les instructions. En C elsen'est pas une instruction, sinon il y en aurait ;après :)
SebMa

1
La sémantique de VimScript est beaucoup plus proche des scripts shell que C @SebMa.
Martin Tournoij

1
@SebMa Non, mais la sémantique de "(presque) tout, y compris les structures de contrôle, est une commande" est similaire à VimScript (et différente de C).
Martin Tournoij
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.