Время от времени я M-! some_command
просто обнаруживаю, что команда выполняется дольше, чем я ожидал, и сохраняет мои emacs замороженными на долгие секунды. Поэтому я смотрю на свои замороженные emacs и бью себя за то, что я не использую, M-& some_command
и обещаю использовать в M-&
следующий раз. Но M-!
в моей мышечной памяти на протяжении десятилетий ... И, конечно, есть Ctrl-G
, но есть случаи, когда нарушение команды и повторный запуск не являются предпочтительными (может быть, это может нарушить, может быть, может потребоваться повторный запуск ...).
Подобная ошибка в оболочке konsole тривиальна для исправления Ctrl-Z
, bg
и задание выполняется в фоновом режиме.
Существует ли в emacs похожая хитрость - способ превратить текущую запущенную команду переднего плана (синхронную) в фоновую (асинхронную)?
Примечание: в случае, если это невозможно по умолчанию M-!
, я открыт для предложений о том, как сделать привязку M-!
к чему-то другому (что было бы функционально эквивалентным, кроме этого трюка).
M-!
к async-shell-command
. :-) Похоже, единственное, что вы теряете, это получение результата в эхо-области, когда он достаточно короткий.
async-shell-command
делает. Он добавляет &
в конец COMMAND
строки и выполняет shell-command
.
&
в конец функции normalshell-command
(M-!
) сделает его асинхронным. Конечно, вы должны сделать это перед выполнением команды, но по крайней мере вы можете использовать ту же привязку клавиш.