4

在 Ruby 中有一个 gem ,它允许在进入Ruby 解释器interactive_editor时进入 vim 会话。vi

从字面上看,我们需要interactive_editor.rb~/.irbrc文件中要求,如下所示:

require '~/interactive_editor.rb'

我们完成了。当我们vi在交互式会话中做时;vim 启动。一旦我们退出编辑器,vim 会话中的代码就会被执行。这是有关在 irb 中运行 vim 的更多信息

那么,在 Python 中有什么等价的吗?

4

2 回答 2

3

vim-ipython 插件是 IPython 和 Vim 之间的双向集成。

引用https://github.com/ivanov/vim-ipython上的自述文件:

使用这个插件,您可以发送行或整个文件供 IPython 执行,还可以在 Vim 中取回对象自省和单词补全,就像您在 IPython 中得到object?<enter>的一样。object.<tab>

这是插件的演示:http: //pirsquared.org/vim-ipython/

于 2013-01-19T09:09:35.493 回答
2
from os import system as sh
def vim(fname): sh('vim ' + fname)

(重新)加载模块的一种可能方式:

import imp
from os import system as sh

def _vim(fname, globs):
    sh('vim ' + fname)
    (dirname, _, basename) = fname.rpartition('/')
    modname = basename.rpartition('.')[0]
    m = imp.load_source(modname, fname)
    globs[modname] = m

并且每当您将其导入解释器时,建议手动制作包装器:

def vim(fname): _vim(fname, globals())

因为globals()在 python 文件中调用包含文件的全局变量,而不是解释器的全局变量。我知道,这并不优雅。但我建议手动重新加载模块reload(modname),它可以让你有更多的控制权,虽然可能很乏味。

于 2013-01-19T09:42:15.107 回答