Есть ли способ заставить vim запускать команду «make» в другом окне терминала? - PullRequest
1 голос
/ 20 июня 2020

Я в основном использую vim как редактор для программирования на C / C ++. К сожалению, я не совсем доволен тем, как работает мой процесс сборки. Я знаю, что можно ввести (или сопоставить ключу) :make, чтобы запустить процесс make. Однако мне не нравится, как работает эта команда, поскольку она запускает процесс сборки в том же окне терминала без надлежащего выделения. Поэтому я обычно запускаю команду make в другом окне на втором мониторе, чтобы у меня было как правильное выделение, так и возможность просматривать ошибки сборки, которые компилятор показывает мне в одном окне при прокрутке исходного кода в моем основном окне vim. Это также довольно утомительно, потому что мне нужно переключить фокус на другое окно, а затем ввести команду make.

Теперь мой вопрос таков: можно ли заставить vim запустить команду make в этом другом окно без изменения фокуса? Таким образом, я мог бы просто сопоставить команду «построить в другом окне» некоторому ключу в vim и добиться всего этого одним нажатием клавиши.

Моя система - Manjaro Linux с i3 в качестве DWM.

(Я не был уверен, разместить ли это на форуме unix или здесь, пожалуйста, простите меня, если это неправильный форум.)

1 Ответ

0 голосов
/ 24 июня 2020

Вы можете добиться этого, используя сопоставления конфигурационных файлов xdotool и i3. Эти сопоставления требуют, чтобы последняя команда, выполненная в терминале окна вправо, была make.

set $prevR    xdotool key --clearmodifiers --delay 2 super+l ctrl+p Return super+h
set $prevRclr xdotool key --clearmodifiers --delay 2 super+l ctrl+l ctrl+p Return super+h

И затем сопоставьте эти команды с вашими предпочтительными клавишами, например:

bindsym --release Mod4+Shift+e exec --no-startup-id $prevR 
bindsym --release Mod4+e       exec --no-startup-id $prevRclr 
   

Первое сопоставление запускает предыдущую команду в окне справа от текущей. Второй делает то же самое при первой очистке терминала. Вам нужно заменить super+[lh] своими собственными сопоставлениями, которые изменяют фокус на ваш альтернативный монитор. Возможно, вам также придется увеличить --delay, чтобы учесть задержку изменения windows.

Если вы также хотите заполнить список quickfix, вам нужно отдельно запустить :make в vim. Сделав это, вы сможете увидеть ошибки, правильно окрашенные и отформатированные на альтернативном мониторе, а также сможете перейти к следующей ошибке в vim с помощью :cnext, :cprevious (см. :help quickfix.txt для получения дополнительной информации).

Если вы хотите применить команду make к произвольному окну, посмотрите раздел «WINDOW_STACK» на странице руководства xdotool(1).

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