Linux:写入python解释器进程的stdin,并让该进程将输入计算为cod

2024-05-06 10:48:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的是gnulinux(具体来说是linuxmint)。我的工作流程如下:

  1. 我在进程1000中打开vim,然后在进程1001中启动python解释器。在
  2. 我在vim中编写一些代码,然后选择某些行,然后将这些行写入文件/proc/1001/fd/0。在
  3. 此时,我希望python解释器将其解释为代码,并像直接输入一样执行它。在

这不能按预期工作。相反,文本会显示在解释器的屏幕上,但不会执行(类似于在bash中显示子进程的错误消息)。我想这与我的工作流程不能很好地使用readline(或类似的库)有关。或者我的问题可能只是python解释器从来没有被设计成以这种方式使用(可能是出于安全和其他原因)。在

我知道有很多IDE具有类似的功能,但我希望一些简单的东西可能会起作用。我很好奇这是可以修复的,还是我误解了一些基本的东西。在


Tags: 文件代码文本bash消息屏幕进程错误
1条回答
网友
1楼 · 发布于 2024-05-06 10:48:24

它存在并被称为vim-slime

唯一的要求是在tmux或{}内运行Python解释器,甚至更好的是:^{}

如果您使用的是vim-pathogen,那么安装vim slime插件很容易:

cd ~/.vim/bundle
git clone git://github.com/jpalardy/vim-slime.git

请参见vim-slime page for configuration details,但是如果您使用的是tmux,只需将以下内容添加到您的.vimrc中,然后重新启动Vim:

^{pr2}$

尝试一下

在Vim中输入一些Python代码:

def fib():
    a, b = 0, 1
    while 1:
        yield a
        a, b = b, a + b

然后按Ctrl-c-Ctrl-c告诉vim slime将当前缓冲区的内容发送到另一个窗口。第一次运行它时,vim slime会询问您要将它发送到哪个screen/tmux窗口,但是在那之后,按顺序键,它会将它发送到您第一次告诉它的任何地方。在

vim slime也是可视模式感知的!如果您只想向Python发送几行,请使用V进入可视行模式,高亮显示所需的行,然后按相同的Ctrl-c-Ctrl-c键序列来发送这些行。在

相关问题 更多 >