Вот что делает autoread
:
:help autoread
When a file has been detected to have been changed outside of Vim and
it has not been changed inside of Vim, automatically read it again.
When the file has been deleted this is not done.
Однако я должен признать, что это никогда не работало удовлетворительным образом для меня. В зависимости от того, имеет фокус vim
или нет, это может работать, а может и не работать. Эта функция полностью сломалась для меня при использовании мозаичного оконного менеджера. Но попробуйте, может быть, это сработает для вас. В противном случае на рынке есть более разумные альтернативы.
Вы можете запустить процесс в фоновом режиме, а затем дождаться его завершения перед запуском следующего цикла. Это позволит вам убить цикл, не убивая процесс python.
while : ; do
python3 my_program.py &
while true; do
kill -0 %1 || break
sleep 1
done
done
Затем простоC-C
(ctrl -c ), чтобы прервать цикл.
kill -0
означает не убивать на самом деле, а выйти с ошибкой кода, если нечего (не )убивать.
Вы можете перехватить SIGINT
в свой скрипт и установить условие выхода из цикла. Запуск вашей программы с setsid
предотвращает получение SIGINT
от CTRL + C
#! /bin/bash
STOPFILE=/tmp/stop_my_program
rm -f $STOPFILE
trap "touch $STOPFILE" INT
while [ ! -f $STOPFILE ]
do
setsid python3 my_program.py
done
rm -f $STOPFILE