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.