如何使用vi(或其他编辑器)作为另一个命令的一部分来编辑某些内容并将其返回到该命令?

时间:2011-09-12 19:20:00

标签: python linux

例如,如果您曾经使用过git,那么当您进行提交时,它会打开vi来添加或编辑某些文本,当您退出时,它可以拦截它并使用该文本。这叫什么,所以我可以在上面查找一些文档?任何其他信息,特别是使用python执行此操作,将非常有用。

3 个答案:

答案 0 :(得分:5)

通常,用户的$EDITOR环境变量被执行,并被指示写一个带有随机名称的临时文件。然后,您的应用程序可以读回临时文件,并在不再需要时将其丢弃。

# Your application makes a system call like:
$EDITOR /tmp/randfile1124098weasc9839x.txt

这允许文本编辑器成为用户首选项。 $EDITOR可以是/usr/bin/vi/usr/bin/emacs,无论如何。

答案 1 :(得分:4)

以下是使用Python执行此操作的方法:

import tempfile, os

f = tempfile.NamedTemporaryFile()
os.system("vi " + f.name) # this will open vi to edit your temporary file
text = f.read()

答案 2 :(得分:2)

您所做的只是对临时目录中的文件进行系统调用。系统调用返回时,读取文件。