要在Python中解析文本文件,请搜索字符串,然后在当前emacs缓冲区中插入
我在Emacs下用乳胶写文档,我希望能够在打字时快速插入圣经经文。我知道esv.el
中的esv-mode
,它通过查询biblegateway.org
插入圣经经文。但是,这只在我在线时才起作用,而且我希望能够离线插入(我经常离线工作)。
我知道pymacs,我没有尝试过,因为它看起来已经严重过时了(我甚至无法打开GitHub存储库下的帮助文件…所以它似乎正在消亡)。
我在Python中创建了一个简单的测试文件,从虚拟文件中读取虚拟文本:
def get_verse():
with open('/home/test.txt','r') as tmp:
text = tmp.read()
return text
a = get_verse()
print(a)
我通常使用Python进行数据传输、分析和处理,因此当前的应用程序超出了我的经验范围。如果有一些普遍的改善,我会很感激你的建议。
然后,我将.emacs
文件下的函数定义为:
如您所见,我尝试了shell-command
和shell-command-to-string
命令。两者都不起作用(即不插入文本)。
但是,在Emacs中执行以下操作时,我确实从插入的虚拟文件中获取文本:
C-u M-! python /home/test.py
我现在有两个问题:
如何让Emacs执行Python代码并在当前缓冲区中插入返回的文本?
如何将变量从Emacs传递给Python代码(即从特定的书、章、节中提取)?
因为这更像是Emacs的问题,所以我没有将其标记为Python(如果您不这么想,可以随意编辑它)。
下面的示例代码在Emacs buffer和python模式下,C-CC-C应该在python3shell缓冲区中打印一行以chars“1.2”开头的行,因为文本中有这样一行。在
Python-模式.el附带一个选项
py-store-result-p
:当t
时,结果在kill ring中,准备好被猛拉。在https://gitlab.com/python-mode-devs/python-mode
shell-command
的文档建议您使用call-process
进行编程:但是,您用
^{pr2}$shell-command-to-string
编写的代码对我来说是有效的,M-x bible-verse
。您需要修复无效的密钥序列才能使密钥绑定生效,但是:以下是一个接受参数并将其传递给进程的版本:
我使用了
(interactive)
中的*
标志来拒绝在不可写的缓冲区中运行,并且演示了如何在提示时格式化先前的参数。在相关问题 更多 >
编程相关推荐