将编辑器中的文本直接重定向到python脚本

时间:2013-10-15 08:42:37

标签: python git vim

有没有办法从python脚本打开文本编辑器,如vim或gedit,然后将文本编辑器中的类型文本直接重定向到python脚本,以便将其保存在数据库中? 像git commit命令那样打开外部文本编辑器并在退出时保存提交消息但不保存到文件中。

1 个答案:

答案 0 :(得分:1)

我认为如果没有临时文件,你最终会依赖于$ EDITOR特定的行为。 tempfile模块处理tempdir和tempfilename的选择,因此您不必这样做。请尝试以下方法。

manedit.py:

    import os
    import tempfile
    import subprocess

    data = '6 30 210 2310 30030'

    mefile = tempfile.NamedTemporaryFile( delete=False )
    # delete=False otherwise delete on close() 
    mefile.write( data )
    mefile.close()

    subprocess.call( [ os.environ.get('EDITOR','') or 'vim', mefile.name ] )
    # unset EDITOR or EDITOR='' -> default = vim
    # block here

    mefile = open( mefile.name, 'r' )
    newdata = mefile.read()
    mefile.close()
    os.remove( mefile.name )

    print( newdata )

然后尝试以下命令来验证每个方案。 用与$ EDITOR

不同的编辑器替换ed
    python manedit.py

    env EDITOR= python manedit.py

    env EDITOR=ed python manedit.py

    env -u EDITOR python manedit.py

陷阱: 脚本仅在EDITOR运行时阻止。编辑器可以在现有编辑器会话上打开一个新窗口并返回,表明手动编辑会话已完成。但我不认识这样的编辑。

编辑: 如果你对vim特别感兴趣,或者你想看看这样的事情有多具体,请参阅以下内容:
http://vimdoc.sourceforge.net/htmldoc/remote.html
http://petro.tanrei.ca/2010/8/working-with-vim-and-ipython.html
http://www.freehackers.org/VimIntegration