Час від часу мені трапляється M-! some_commandпросто виявити, що команда працює довше, ніж я очікувала, і зберігає мої emacs довгими секундами. Тому я глазурую свої заморожені емаки і б'ю себе за те, що не користуюся, M-& some_commandі обіцяю використовувати M-&наступний раз. Але M-!це в моїй м'язовій пам’яті десятиліттями… І звичайно, є Ctrl-G, але випадки, коли порушувати команду і повторно запускати її не бажано (можливо, це може зламати що-небудь, можливо, дорого було б повторити…).
Подібна помилка в консолі оболонки є тривіальною для виправлення Ctrl-Z, bgі робота працює у фоновому режимі.
Чи є в emacs якийсь подібний трюк - спосіб перетворити команду, що працює на даний момент (синхронний), у фоновий (асинхронний)?
Зауважте: якщо це неможливо за замовчуванням M-! , я відкритий для пропозицій, як перезавантажити M-!щось інше (що було б функціонально еквівалентним, крім цього фокусу).
M-!до async-shell-command. :-) Здається, що єдине, що ви втрачаєте, - це отримання результату в області ехо, коли він досить короткий.
async-shell-commandробиться. Він додає &до кінця COMMANDрядка і виконує shell-command.
&до кінця звичайногоshell-command(M-!) зробить його асинхронним. Звичайно, ви повинні зробити це перед тим, як запустити команду, але принаймні ви можете скористатися тим самим прив'язкою клавіш.