Да, есть что-то нецелесообразное. Вы прыгаете прямо с SIGINT
на SIGKILL
сигнал. Я предлагаю, как и другие люди , рассмотреть вопрос об отправке сигналов SIGHUP
или, SIGTERM
прежде чем использовать ядерный вариант. Кроме того, нежелательно иметь это в качестве привязки клавиш, что, конечно же, означает, что она будет работать только тогда, когда ZLE активен, а оболочка в интерактивном режиме запрашивает ввод данных, а не во время выполнения команд. (Для этого вам будет необходимо настроить терминал, а не оболочку, а также необходимость иметь терминальную линию дисциплину , которая реализует отправку SIGTERM
как расширение POSIX указанного поведения.)
На этом замечании, кажется, никто еще не заметил, что вы спрашиваете о привязках клавиш редактора командной строки, а не о терминале. Чтобы ответить на первую часть вашего вопроса, тогда:
Вы настраиваете функцию оболочки для отправки сигнала «текущей» работе.
function terminate-current-job() { kill -s TERM %+ ; }
Затем вы создаете пользовательский виджет ZLE, который вызывает эту функцию оболочки.
zle -N terminate-current-job terminate-current-job
Затем, наконец, вы связываете этот виджет с ключом по вашему выбору.
bindkey "^/" terminate-current-job