system () - это путь. :h system()
.
Вы можете использовать старомодный способ (тот, который дает вам полный контроль, так как вы сможете передавать и перенаправлять столько раз, сколько пожелаете):
:let res = system("echo ".shellescape(@+)." | the-filter-command")
:put=res
Однако у вас могут возникнуть проблемы с окончаниями строки (последний символ должен быть chomped ). Следовательно, это второе решение, где vim использует временный файл и передает его в программу фильтра:
:let res = system(the-filter-command, @+)
:put=res
Есть также другой способ сделать это, если вы играете с другим буфером:
:new
:put=@+
:%!the-filter-command
:%d +
:bd
:put=@+
Последнее примечание: Vim уже имеет несколько собственных фильтров, таких как :sort
, uniq
также возможен изначально (но немного сложнее), ...