se mais endif oneliner


11

Eu tenho esse oneliner no meu, vimrcmas ele não funciona:

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

O VIM diz:

E518: Unknown option: else

Pode me ajudar ?

Respostas:


19

Você precisa colocar outro |antes elseque o vim pense que seu comando é em set listchars+=space:· elsevez de dois comandos separados. É por isso que você recebeu a mensagem de erro: elseé uma opção desconhecida para o comando set.

A sintaxe correta é a seguinte:

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

Eu estava lutando para onde eu colocaria o |, antes ou depois do else? Agora, eu agora são os dois :-D. Muito obrigado :) !
precisa saber é o seguinte

2
@SebMa: Pense em como o vim analisaria seu código se ele fosse escrito em várias linhas: instrução 1 if has("patch-7.4.710"), instrução 2 set listchars+=space:·, instrução 3 else, instrução 4 set listchars+=trail:·e última instrução endif. Como o |são usados para instruções em separado é lógico colocar um antes elsee um depois :)
statox

1
É lógico, desde que se saiba o idioma. Em C, usamos ;para separar instruções. Em C elsenão é uma instrução, caso contrário, haveria um ;depois :)
SebMa

1
A semântica do VimScript está muito mais próxima do script de shell do que o C @SebMa.
Martin Tournoij

1
@SebMa Não, mas a semântica de "(quase) tudo, incluindo as estruturas de controle são um comando" é semelhante ao VimScript (e diferente de C).
Martin Tournoij
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.