为了账号安全,请及时绑定邮箱和手机立即绑定

在 Vim 中执行 python 脚本行

在 Vim 中执行 python 脚本行

慕妹3146593 2024-01-24 20:55:48
我刚刚开始使用 Vim 作为我的主要 IDE,在之前的 IDE 中我经常使用的功能之一是“在 python 中执行选择”。我了解到在 python 中执行代码有两种方法,一种是, :python3 {expression}另一种是:w python3我想要做的是在 vim 中执行脚本的选定行,而不刷新(关闭)python 控制台。看起来:python3 {expression}没有关闭python控制台,所以在我使用之后:python3 a=3,命令:python3 print(a)返回了正确的值3。但是,我认为这个功能没有“选择功能”。虽然:help python显示了[range]参数,但我不明白如何使用它。另一方面,第二个函数具有选择功能(例如:1,3w !python3),但每次我使用该函数时,python 控制台似乎都会刷新(=关闭)。我想向 .vimrc 添加简单的函数就可以达到我的目的,但找不到。任何帮助将非常感激!
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

找到答案了!


我通过制作简单的自定义命令解决了这个问题。


python3 << EOL

import vim


def ExecuteSelectedLine(l1, l2):

    for i in range(l1-1,l2):

        print(">>" + vim.current.buffer[i])

        exec(vim.current.buffer[i],globals())

EOL

command! -range Eval <line1>,<line2> python3 ExecuteSelectedLine(<line1>, <line2>)

如何使用

  • 在 python 中仅运行脚本的第一行到第三行:1,3Eval

  • 运行python中的当前行:Eval

  • 在 python 中运行可视化选择的脚本部分:'<,'>Eval

范围选择与 -range 选项一起使用,并使用 python 的“exec”函数和 globals() 选项,持久性保持不变(无需刷新)。

我想我的编码风格,在控制台中尝试不同的代码片段并最终确定主脚本,是一种奇怪的编码方式,因为我在社区中找不到类似的尝试。


查看完整回答
反对 回复 2024-01-24
?
繁花如伊

TA贡献2012条经验 获得超12个赞

我不明白这个问题。命令

:1,3w !python3

应该可以解决这个问题,你说的“每次我使用该函数时 python 控制台都会刷新”到底是什么意思?如果你的意思是,它等待按下回车键才能返回 vim,这是很自然的。

您还可以使用:

:'<,'>w !python3

以前使用可视化模式来选择某些代码块。您想在新的终端窗口中执行代码吗?


查看完整回答
反对 回复 2024-01-24
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信