Можно ли перенаправить вывод команды в окно быстрого исправления?
Команда, которую я запускаю, - это
:!java %:r
и надеялся, что выход перейдет в окно быстрого исправления
Можно ли перенаправить вывод команды в окно быстрого исправления?
Команда, которую я запускаю, - это
:!java %:r
и надеялся, что выход перейдет в окно быстрого исправления
Обратите внимание, что окно quickfix предназначено для конкретного вывода (например, инструментов компилятора или синтаксиса), который включает в себя ссылки (то есть строки и номера столбцов) в текущий буфер. Там есть много инфраструктуры: 'makeprg'
, 'errorformat'
и т.д., Обычно встраиваемые в плагин компилятора.
Несмотря на то, что вы можете перенаправить произвольный вывод в окно быстрого исправления, он дает небольшую выгоду (и имеет недостаток от 'makeprg'
) по чтению вывода внешней программы в новый буфер нуля, например:
:new|0read !java #:r
Я бы предложил один из двух вариантов: настроить makeprg
для запуска java, как вы хотите, или создать сопоставление или команду, чтобы заполнить список quickfix без изменения чего-либо еще.
makeprg
и компилятора Как правило, для этого я обычно устанавливал параметр makeprg
, как говорили другие. Это не взлом, это именно то, для чего предназначен makeprg
.
Единственная проблема заключается в том, что у вас есть другой скрипт сборки, который вы хотите запустить. Более общее решение - создать простой плагин компилятора. Например, где-то на вашем runtimepath
вы можете создать файл под compiler/java.vim
и установить его примерно так:
if exists("current_compiler")
finish
endif
let current_compiler = "java"
CompilerSet makeprg=java
Теперь, когда вы работаете с java, вы можете :compiler java
а затем ваш makeprg
будет установлен по желанию в текущем окне. Если вы хотите использовать его для всех окон, используйте :compiler! java
:compiler! java
, с треском. Не все плагины компилятора устанавливают параметр makeprg
, но вы всегда можете сбросить его с помощью :set makeprg&
. Попробуйте :help write-compiler-plugin
для получения дополнительной информации.
Кроме того, вы можете также использовать cexpr
для заполнения списка quickfix. Например:
:cexpr system('java ' . shellescape(expand('%:r')))
expand
необходимо расширить '%:r'
в выражении, а shellescape
избегает его, чтобы он мог быть использован в качестве аргумента команды оболочки. Затем строка 'java '
добавляется к экранированному пути, и результат вызывается в качестве команды оболочки system
. Вывод этой команды используется для загрузки списка быстрого обновления.
Самое приятное в этом заключается в том, что он не изменяет makeprg
или какие-либо другие параметры, но все же позволяет легко заполнять список quickfix. Конечно, вы, вероятно, захотите сопоставить это или определить для него пользовательскую команду.
Попробуй это:
set makeprg=java
make %:r
Это немного взломать и, конечно же, предполагает, что вы еще не используете makeprg
для своего реального скрипта сборки.
Я сопоставил лидер + j + r, чтобы запустить мой Java-код и отобразить его в окне quickfix, выполнив
map <leader>jr :set makeprg=java <CR>:make %:r<CR>:copen<CR>