Как записать содержимое буфера во внешнюю программу и вывести результат в окно quickfix? - PullRequest
0 голосов
/ 09 июля 2020

Итак, я знаю, что вы можете передать текущее содержимое буфера внешней программе с помощью w!sometool, и я знаю, что вы можете использовать cexpr для отображения, например, содержимого переменной в окне quickfix, но я не могу понять, как это сделать в то же время.

По сути, я хочу сделать следующее:

:cexpr w!sometool --stdin

Но я не могу понять, как заставить vim обрабатывать эту часть после cexpr в качестве команды vim для запуска.

У меня уже установлен формат ошибки, соответствующий выходным данным.

В качестве альтернативы, если есть способ использовать систему makeprg для запуска makeprg таким же образом ( текущее несохраненное содержимое буфера на стандартный ввод), это тоже подойдет.

1 Ответ

0 голосов
/ 09 июля 2020

Ну, дело в том, что в VimScript команды и выражения - разные вещи. Таким образом, вы не можете просто составить command1 command2 command3, как с выражениями. (Да, существует :w !sometool, но это не две вставленные вместе команды, а одна команда с уникальным синтаксисом).

Значит, вы должны выполнить :cexpr some_expr, а не :cexpr some_command. Этого можно достичь с помощью функции system() (или systemlist()), поскольку любой вызов функции (без предыдущей команды :call) является выражением в VimScript:

:cexpr system('sometool', bufnr())
...