Чисто убить весь процесс vim из других вкладок - PullRequest
0 голосов
/ 10 октября 2019

Я использую следующую команду Linux, чтобы убить весь процесс vim,

ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill

Вышеприведенная команда работает, за исключением того, что она выводит:

Vim: Caught deadly signal TERM

Есть ли другой чистый способ убить его?

1 Ответ

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

Ну, пока вы в порядке, теряя все несохраненные изменения и останавливая промежуточные фоновые задания, вы можете отправлять другой сигнал из команды kill с параметром -s. Сигнал 15, SIGTERM, является сигналом по умолчанию;Вы можете kill -s 9 до убить процессы прямо . Вот хороший список сигналов для справки.

Итак, ваша окончательная команда будет выглядеть так:

ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill -s 9

Это не генерирует никаких предупреждений о смертельных сигналах. Это также довольно неприятный способ работы, и он может привести к некоторому грубому поведению, если у вас нетривиальная настройка vim.

Как сказал @moopet в комментариях, вы все равно можете использовать SIGTERMесли вы перенаправите вывод команды на /dev/null. Это не будет лучше, чем SIGKILL, поскольку Vim не будет автоматически сохранять ваши файлы, но он может дать любые фоновые задачи, которые он выполнял некоторое время для очистки.

В качестве альтернативы, если выжелая изменить настройки, вы всегда можете запустить vim как сервер и выдавать ему команды сохранения и закрытия из терминала. На сайте Vim SE .

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