Потеря фокуса при нересте в неовиме
Я хотел бы реализовать новый рабочий процесс для Graphviz в Neovim. По сути, я хочу скомпилировать Graphviz и отобразить результаты в предварительном просмотре с помощью Evince или Zathura. Для файлов «.dot» я сопоставил<leader>c
следующее:
autocmd FileType dot nnoremap <silent> <leader>c :w <bar> :!neato '%' -Tpdf -o '%:r.pdf' && evince '%:r.pdf' & <CR>
Это сохраняет файл, вызывает «neato» для компиляции графика и запускает Evince в фоновом режиме. Хотя это работает так, как задумано, это отвлекает, потому что заставляет меня переключать внимание с Neovim на Evince. Есть ли способ сосредоточиться на Neovim? Меня также беспокоит возможность возникновения нескольких фоновых процессов Evince. Может ли это случиться?
РЕДАКТИРОВАТЬ (РЕШЕНО): Я наконец решил это с помощью xdotool. Сначала я сохранил ID окна, где работает терминал с Neovim. Затем я запустил Evince и после небольшой паузы вернул фокус на сохраненное окно.
autocmd FileType dot nnoremap <silent> <leader>c :w <bar> :!neato '%' -Tpdf -o '%:r.pdf' && id=$(xdotool getwindowfocus);evince '%:r.pdf' & sleep 0.4; xdotool windowactivate $id <CR>