我在VIM中有一个热键,可将我带入命令模式并调用bash脚本。 bash脚本尝试执行以下步骤:
如果我手动键入所有内容,脚本将起作用,但是如果运行脚本,则直到脚本完成后,文本块才会保存为文件,当IPython稍后尝试在文件中加载文件时会导致错误脚本。
这是我尝试过的步骤:
#!/bin/bash
# text to be written has been selected in VIM
tmux send-keys ':w jtemp.py'
tmux send-keys 'Enter'
# load code selection in ipython
tmux select-pane -t 1
tmux send-keys '%load jtemp.py'
tmux send-keys 'Enter'
tmux send-keys 'Enter'
关于bash脚本仍在执行过程中如何将文件保存到磁盘的任何想法?
答案 0 :(得分:2)
问题很可能(但是我不确定)是vim阻塞了,直到脚本完成才处理按键。我不知道是否可以让vim在后台运行脚本,但是您可以将热键绑定到tmux中,而不要使用run-shell -b,例如:
bind F1 run -b "bash /path/to/my/script"
实际上,如果在tmux中执行此操作,则可能不需要脚本在后台运行,因为两个受影响的应用程序(vim和ipython)不会阻塞,并且tmux是否会无关紧要。因此,您只需将-b排除在外即可。
您仍然几乎肯定会在Enter和选择窗格之间需要睡眠一秒钟或半秒(“ sleep 1”或“ sleep 0.5”,实验),否则vim会在写入文件之间进行竞争和ipython读取它。
答案 1 :(得分:1)
我不确定在shell脚本中调用tmux
的开销,但是建议您在没有工作流程的情况下编写脚本–您可以使用sed
来解析文件中两个标记之间的文本,将其通过管道传输到新的.py文件,然后将该.py文件加载到ipython中。