Я нашел решение:
Я положил это в~/.vimrc
:
autocmd VimEnter * silent exec "! echo -ne '\e[1 q'"
autocmd VimLeave * silent exec "! echo -ne '\e[5 q'"
Это потому, что процесс запускается через тот терминал, в котором вы сейчас находитесь, и ваш & помещает его в фоновый режим этого терминала.
Выполните ps faux
, и вы сможете увидеть генеалогическое древо процесса и отметить, как он порождается из терминала, в котором вы сейчас находитесь. Если вы убиваете этот терминальный процесс, вы также убиваете все дочерние процессы., например текущий запущенный скрипт.
В качестве альтернативы можно использовать что-то вроде tmux
или screen
для запуска сценария в фоновом сеансе, запускать его как задание cron или демонизировать его через вашу систему инициализации, создав для него файл модуля.