если еще endif oneliner


11

У меня есть этот oneliner в моем, vimrcно он не работает:

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

VIM говорит:

E518: Unknown option: else

Можешь мне помочь ?

Ответы:


19

Вам нужно поставить другую, |прежде чем elsevim будет думать, что ваша команда set listchars+=space:· elseвместо двух отдельных команд. Вот почему вы получили сообщение об ошибке: elseнеизвестная опция для команды set.

Правильный синтаксис следующий:

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

Я боролся с тем, где бы я разместил |, до или после else? Теперь я теперь это оба :-D. Большое спасибо :) !
Себма

2
@SebMa: Подумайте, как vim будет анализировать ваш код, если он написан в несколько строк: инструкция 1 if has("patch-7.4.710"), инструкция 2 set listchars+=space:·, инструкция 3 else, инструкция 4 set listchars+=trail:·и последняя инструкция endif. Поскольку |они используются для разделения инструкций, логично поставить только одну до elseи одну после :)
statox

1
Это логично, если человек знает язык. В Си мы используем ;отдельные инструкции. В Си elseнет инструкции, иначе было бы ;после нее :)
SebMa

1
Семантика VimScript намного ближе к сценариям оболочки, чем C @SebMa.
Мартин Турной

1
@SebMa Нет, но семантика «(почти) всего, включая управляющие структуры, является командой» похожа на VimScript (и отличается от C).
Мартин Турной
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.