Ответ 1
Команда фильтра :!
всегда работает на всех строках (эта старая, как исходная vi, вложение команд Ex, начинающихся с :
), а диапазон '<,'>
также указывает только строки.
Вы можете использовать почтенный vis plugin для достижения вашего результата; он предлагает команду :B
, которая ограничивает следующую команду визуально выбранным текстом.
:'<,'>B !echo foobar
Плагин работает для всех видов команд Ex; Тем не менее, для :substitute
в пределах выделения вы также можете использовать специальный \%V
атом.