有没有办法自动观看python脚本文件并在每次保存时在tmux / screen中执行?我主要在vim工作,每次我想评估它在新窗口中打开的代码,所以它有点打破了工作流程。我问这个是因为我也在Scala中工作并且sbt构建工具有非常简洁的选项来做到这一点(在保存时运行编译器/ REPL)
答案 0 :(得分:2)
正如肖恩和肯特建议的那样,这样做的简单方法就是让vim
驾驶它。
但是,如果你只是“大部分”在vim工作,那可能不合适。
唯一的另一种选择是编写使用平台的文件系统监视API的代码,或者,如果最坏的情况发生,则定期轮询文件,并在每次更新时运行它。然后只需在screen
或tmux
(可能在另一个vim
窗口中使用screen
)下运行该代码。
由于我不了解你的平台,我会写一个愚蠢的民意调查实现来展示这个想法 - 请记住,在现实生活中,使用像inotifywatch
/ {这样的工具你会好得多。 {1}} /等:
fswatch
现在,你可以这样做:
import os
import subprocess
import sys
import time
scripts = sys.argv[1:]
mtimes = {script: os.stat(script).st_mtime for script in scripts}
while True:
for script in scripts:
mtime = os.stat(script).st_mtime
if mtime != mtimes[script]:
subprocess.call([script], shell=True)
mtimes[script] = mtime
time.sleep(250)
答案 1 :(得分:1)
如果每次保存py文件都会自动执行,这会很烦人。因为您可以编辑py文件,只需py类。或纯配置的东西。无论如何,如果你想要这样,你可以尝试:
autocmd FileWritePost *.py exec '!python' shellescape(@%, 1)
我vimrc
中的内容是:
autocmd FileType python call AutoCmd_python()
fun! AutoCmd_python()
"setlocal other options for python, then:
nnoremap <buffer> <F9> :exec '!python' shellescape(@%, 1)<cr>
endf
现在你可以手动按<F9>
来测试你当前的python文件。