2013-04-01 4 views
1

Следующая простая функция, как предполагается рассчитывать и возвращает количество строк, которые визуально выбран:Возможно ли функция «диапазон» для возврата значения

fu! TQ84_fu_test() range 

    return line("'> ") - line("'<") + 1 

endfu 

Если я пытаюсь вызвать его, как так

:'<,'>echo TQ84_fu_test() 

Vim дает мне ошибку E481 No range allowed (который какое-то образом задокументированная)

есть ли еще способ обойти эту проблему, так что я могу «извлечь» значение, возвращаемое функция работает в диапазоне.

Я предполагаю, что могу установить глобальную переменную внутри функции и прочитать эту глобальную переменную после вызова функции, но, если возможно, я бы этого не сделал.

+0

Вы должны сказать нам немного больше о контексте. Вы делаете сценарий? отображение? команда? – romainl

ответ

2

В командной строке не требуется '<,'>, поскольку команда :echo не работает с диапазонами. Это не помешает вашей функции использовать метки < и >, которые все еще могут быть разрешены.

Так, только после удара : использования Ctrl - U удалить знаки и использовать :echo TQ84_fu_test(). Это должно сработать.

1

range работает только с :call, а не :echo. Поскольку вы не используете специальные переменные , которые поставляются с range, вам здесь не нужно беспокоиться (используя визуальный режим и его отметки).

Смежные вопросы