如何编写文本文件,然后在相同的Bash脚本中读取文本文件?

基思·里昂(Keith Lyons)

我在Vim中有一个热键,可以将我带到命令模式并调用Bash脚本。Bash脚本尝试执行以下步骤:

  1. 在两个标记之间选择文本
  2. 将选定的文本块发送到.py文件
  3. 将.py文件加载到IPython中

如果我手动键入所有内容,脚本将起作用,但是如果我运行脚本,则直到脚本完成后,文本块才保存为文件,当IPython稍后尝试在脚本中加载文件时会导致错误。

这是我尝试的步骤:

  1. 如果我的文件被保存在缓冲区中,我会尝试同步和刷新
  2. 万一文件需要更多的时间来写,我尝试睡眠并等待
  3. 我还尝试了异步Shell命令,以查看Bash脚本是否比Vim写入文件具有优先权。
#!/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脚本仍在处理中时,如何将文件保存到磁盘?

尼古拉斯万豪酒店

问题很可能(但是我不确定)是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读取文件之间会发生争执。 。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章