Я хочу скомпилировать программу внутри Vim, запустить ее и отобразить вывод в списке быстрых исправлений. Я думаю, что это должно работать:

:cgetexpr "!cc -o %:r % && ./%:r"

Однако это просто отображает следующее в списке быстрых исправлений:

|| !cc -o %:r % && ./%:r

Я также попробовал:

:cgetexpr execute "!cc -o %:r % && ./%:r"

Это выдает ошибку:

E121: Undefined variable: execute
E15: Invalid expression: execute "!cc -o %:r % && ./%:r"

Аналогичная ошибка отображается, если я опускаю кавычки:

:cgetexpr execute !cc -o %:r % && ./%:r

Можно ли сделать это?

1 ответ1

1

Как говорит :help :cexpr , выражение следующее :cexpr может быть либо строкой, либо списком. Ни одно из выражений, которые вы пытались оценить, не соответствует строке или списку вывода команды cc Однако :help :cexpr приводит пример, который может вам помочь.

:cexpr system('grep -n xyz *')

:cgetexpr похож на :cexpr но не переходит к первой ошибке.

Я подтвердил, что

:cgetexpr system("cc hello.c")

работает, но получение переменных в этой команде немного больше работы. Следующее вставляет имя текущего файла в команду.

:exe 'cgetexpr system("cc '.expand('%').'")'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .