我想要一个快速而简单的方法,在文件发生变化时执行一个命令。我想要一个非常简单的东西,我可以让它在终端上运行,并在我完成对该文件的处理后关闭它。
目前,我正在使用这个。
while read; do ./myfile.py ; done
然后我需要去那个终端,按Enter,每当我在编辑器上保存该文件时。我想要的是像这样的东西。
while sleep_until_file_has_changed myfile.py ; do ./myfile.py ; done
或者任何其他如此简单的解决方案。
BTW:我用的是Vim,我知道我可以添加一个自动命令来运行BufWrite上的东西,但这不是我现在想要的那种解决方案。
更新:我想要一些简单的东西,如果可能的话可以丢弃。更重要的是,我想让一些东西在终端运行,因为我想看到程序的输出(我想看到错误信息)。
关于答案:感谢你的所有答案!所有这些答案都非常好,而且都是在你的指导下完成的。所有这些都非常好,而且每一个都采取了与其他的非常不同的方法。由于我只需要接受一个,所以我接受了我实际使用过的那个(它简单、快捷、容易记忆),尽管我知道它不是最优雅的。
使用Vim的解决方案。
:au BufWritePost myfile.py :silent !./myfile.py
但我不想要这个解决方案,因为它打字有点烦人,有点难记住到底要打什么,而且要撤销它的效果有点困难(需要运行:au! BufWritePost myfile.py
)。此外,这个方案会阻止Vim,直到命令执行完毕。
我把这个方案加在这里只是为了完整,因为它可能会帮助其他人。
要显示程序输出(并且完全打乱你的编辑流程,因为输出会在你的编辑器上写几秒钟,直到你按下Enter键),请删除:silent
命令。