Убить процесс при сохранении файла - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь сказать neovim, что нужно убить sxhkd и запустить sxhkd после того, как я закрою его конфигурационный файл (sxhkdrc). Это то, что у меня в моем init.vim

autocmd BufWritePost *sxhkdrc pkill sxhkd; setsid sxhkd

Я получаю следующую ошибку

"sxhkdrc" 9L, 136C written
Error detected while processing BufWritePost Autocommands for "*sxhkdrc":
E492: Not an editor command: pkill sxhkd; setsid sxhkd
Press ENTER or type command to continue

Я могу запустить pkill sxhkd; setsid sxhkd в терминале без ошибок, но по какой-то причине мойФайл init.vim не знает, как выполнить эту команду.

Что я могу сделать, чтобы убить процессы, такие как sxhkd, при сохранении файла конфигурации?

1 Ответ

1 голос
/ 28 октября 2019

При выполнении внешней команды из Vim мы используем префикс ! для запуска команды в неинтерактивной оболочке. Вы можете проверить это, выполнив :!ls для быстрой демонстрации.

В вашем случае Vim сообщает вам, что не понимает команду, которую вы ему даете. Что достаточно справедливо: это не команда редактора, это команда, предназначенная для выполнения из терминала. Вы, вероятно, хотите:

autocmd BufWritePost *sxhkdrc !pkill sxhkd; setsid sxhkd

Редактировать: Алекс отмечает в комментариях, что sxhkd - это демон, поэтому добавление фона к & будет иметь больше смысла:

autocmd BufWritePost *sxhkdrc !pkill sxhkd && setsid sxhkd &
...