Linux:写入python解释器进程的stdin,并让该进程将输入作为代码进行计算
具体来说,我正在运行GNULinuxMint。以下是我想要的工作流程: 我在进程1000中打开vim,然后在进程1001中启动python解释器。 我在vim中编写一些代码,然后选择某些行,然后将这些行写入文件/proc/1001/fd/0。 此时,我希望python解释器将其解释为代码,并像直接输入一样执行它。 这不符合预期。相反,文本显示在解释器的屏幕上,但它的执行方式与bash中显示子进程的错误消息时不同。我认为这与我的工作流程不能很好地使用readline或类似的库有关。或者,我的问题可能只是python解释器从未被设计为以这种方式使用,可能是出于安全和其他原因 我知道有许多IDE具有类似的功能,但我希望一些简单的东西可以工作。我很好奇,这是可以修复的,还是我误解了一些基本的东西。它存在并且被称为 唯一的要求是在tmux或screen中运行Python解释器,甚至更好: 安装vim slime插件很容易,如果您使用: 请参阅,但如果您使用的是tmux,只需将以下内容添加到.vimrc并重新启动Vim即可:Linux:写入python解释器进程的stdin,并让该进程将输入作为代码进行计算,python,linux,bash,vim,readline,Python,Linux,Bash,Vim,Readline,具体来说,我正在运行GNULinuxMint。以下是我想要的工作流程: 我在进程1000中打开vim,然后在进程1001中启动python解释器。 我在vim中编写一些代码,然后选择某些行,然后将这些行写入文件/proc/1001/fd/0。 此时,我希望python解释器将其解释为代码,并像直接输入一样执行它。 这不符合预期。相反,文本显示在解释器的屏幕上,但它的执行方式与bash中显示子进程的错误消息时不同。我认为这与我的工作流程不能很好地使用readline或类似的库有关。或者,我的问题可
let g:slime_target = "tmux"
试一试
在Vim中键入一些Python代码:
然后按Ctrl-c-Ctrl-c告诉vim slime将当前缓冲区的内容发送到另一个窗口。第一次运行它时,vim slime会询问您要将其发送到哪个屏幕/tmux窗口,但之后,按顺序键,它会将其发送到您第一次告诉它的任何位置
vim slime也可以感知视觉模式!如果您只想向Python发送几行代码,请使用V键进入可视行模式,突出显示所需的行,然后按相同的Ctrl-c-Ctrl-c键顺序只发送这些行。它存在并且被调用
唯一的要求是在tmux或screen中运行Python解释器,甚至更好:
安装vim slime插件很容易,如果您使用:
请参阅,但如果您使用的是tmux,只需将以下内容添加到.vimrc并重新启动Vim即可:
let g:slime_target = "tmux"
试一试
在Vim中键入一些Python代码:
然后按Ctrl-c-Ctrl-c告诉vim slime将当前缓冲区的内容发送到另一个窗口。第一次运行它时,vim slime会询问您要将其发送到哪个屏幕/tmux窗口,但之后,按顺序键,它会将其发送到您第一次告诉它的任何位置
vim slime也可以感知视觉模式!如果只想向Python发送几行代码,请使用V键进入可视行模式,突出显示所需的行,然后按相同的Ctrl-c-Ctrl-c键顺序只发送这些行。如果将代码直接粘贴到解释器,会发生什么情况?有关文字问题的答案,请参阅或。感谢提供信息!我知道这比我想象的要复杂,但考虑到窗口系统的要求是有道理的。雷德尔:如果我直接将代码粘贴到解释器中,一切都很好。问题似乎是我误解了窗口系统是如何将stdin多路传输到不同的窗口的。Michael的链接对此进行了解释。如果您将代码直接粘贴到解释器,会发生什么?有关您的文字问题的答案,请参阅或。谢谢您提供的信息!我知道这比我想象的要复杂,但考虑到窗口系统的要求是有道理的。雷德尔:如果我直接将代码粘贴到解释器中,一切都很好。问题似乎是我误解了窗口系统是如何将stdin多路传输到不同的窗口的。迈克尔的链接中解释了这一点。与其说我拙劣地试图重新发明轮子,不如说这是一个聪明的方法。它工作得很好,非常感谢!这似乎是一个聪明的方法,而不是我拙劣的重新发明轮子的尝试。它工作得很好,非常感谢!
def fib():
a, b = 0, 1
while 1:
yield a
a, b = b, a + b