Подтвердить что ты не робот

Запуск: сделать из gVim в фоновом режиме

Я использую gVim в окнах для редактирования моего кода (в основном С++). Я использую: make в gVim для компиляции проекта, но это операция блокировки, которая мешает мне использовать gVim до завершения компиляции. Как я могу сделать: сделать асинхронно и по-прежнему получать преимущества от чтения ошибок обратно в Vim и перейти к ошибкам в исходном коде? Бонусные очки, если я увижу процесс make в режиме реального времени. Прямо сейчас: make перенаправляет вывод в файл, поэтому я не вижу прогресса в make.

4b9b3361

Ответ 1

Что я делаю, это

:!gvim -c 'MyMake'

(где MyMake - это настраиваемая команда, которая может переключиться на соответствующий каталог, make и copen 20.)

и я выполняю свою работу, а сборка идет в другом окне.

Другой вариант:
Вы можете перенаправить прогресс в некоторый файл из оболочки или внутри vim (:! Make &). И затем, используя

:cfile make_result_file

:cw
 or
:copen 20 

Достигните того же результата, что и вы: make

Ответ 3

Посмотрите на мой плагин AsyncCommand. Он просто обертывает синтаксис vim, необходимый для выполнения чего-либо, и загружает его с помощью --remote. Я загрузил AsyncCommand 2.0, который включает в себя команду AsyncMake.

Добавьте script к вашему .vim/plugin, и вы можете построить с помощью :AsyncMake или :AsyncMake target. Ошибки будут открываться в вашем quickfix после завершения make.


Отвечая на комментарий для более читаемого кода:

Чтобы увидеть результаты сборки в Windows, если у вас cygwin/unxutils/что-то с tail в вашем пути, а затем в asynccommand.vim, измените

call <SID>Async_Impl(tool_cmd, vim_cmd)

к

call <SID>Async_Impl(tool_cmd, vim_cmd)
call <SID>Async_Impl("tail -f ". temp_file, "")

Это должно изменить все команды Async, чтобы открыть второе командное окно с выходом.

Ответ 4

Попробуйте использовать

:!start make

(подробнее об этом: "help! start" ) - таким образом, vim не должен ждать завершения процесса - вы можете просто продолжать редактирование).

Ответ 5

Я бы использовал встроенные методы вашей ОС для выполнения фоновых задач.

В окнах попробуйте ввести

:!start make

В linux/mac os x попробуйте

:!make > /dev/null 2>&1 &

Ответ 6

Вы не сможете увидеть прогресс make (внутри Vim), если вы не установите очень последнюю версию Vim (v7.4 и многие исправления, или просто Vim 8). Теперь есть несколько плагинов, которые воспользовались им. Мой BuildToolsWrapper является одним из них. Я успешно протестировал его на Linux и на окнах.

До этого нам нужны были другие трюки. Я помню плагин Marc Weber, который смог подражать фоновой компиляции в Windows. Было еще несколько человек. Я позволил другим перечислить их.