Выключить и перезапустить контрольный код?

Я часто нахожу себя (после внесения некоторых изменений в исходный текст ) « Ctrl + C ; ing», чтобы перезапустить программу с изменениями.

Есть ли способ сделать это быстрее, не завершая программу в цикле и просто выходя из нее каждый раз?

Если вы не хотите использовать циклы, ваш выбор ограничен, поскольку он по существу исключает возможность автоматического повторного запуска вашей программы снова и снова.

Тем не менее вы можете, по крайней мере, вырезать шаг с помощью , используя виджет « accept-and-hold . Это запускает текущую командную строку (точно так же, как accept-line которая обычно привязана к Enter ), но также толкает ее в стек буфера, так что она автоматически вытягивается в следующем запросе (фактически команда остается в подсказке после выполнения) , По умолчанию он привязан к Alt + a в режиме emacs, но может быть легко связан с другим ярлыком. Например, для Ctrl + F (потому что F чуть выше C :

 bindkey "^F" accept-and-hold 

Поэтому вам просто нужно запустить программу с помощью Ctrl + F, а затем нажать Ctrl + C , Ctrl + F, чтобы остановить и перезапустить ее.

Помимо использования управляющего кода для ручного перезапуска, вы можете рассмотреть возможность использования системы, специально разработанной для автоматизации такого рода процедур, то есть (повторного) запуска процесса после изменения кода, например сторожа .

Вы также можете использовать inotifywait (from inotify-tools), чтобы уведомлять, когда изменяется файл, представляющий исходный код, и отправлять сигнал, когда он это делает.

(Раскрытие конфликта интересов: я работаю в Facebook, но не в команде сторожа.)