Как я могу отфильтровать содержимое реестра в vim? - PullRequest
3 голосов
/ 16 февраля 2010

Я хочу отфильтровать содержимое регистра (в моем случае регистр буфера обмена "+) с помощью внешней команды перед вставкой в ​​буфер.

Должно быть решение, аналогичное VIM: сохранить вывод внешней команды в регистр , но я просто не могу понять это.

Ответы [ 2 ]

5 голосов
/ 16 февраля 2010

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 также возможен изначально (но немного сложнее), ...

1 голос
/ 16 февраля 2010
:let @a = system("ls -l " . shellescape(@+))

Кажется, здесь работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...