在 Vim 中执行 python 行脚本
Execute line(s) of python script in Vim
我刚开始使用 Vim 作为我的主要 IDE,而我在之前的 IDE 中经常使用的功能之一是“在 python 中执行选择”。
我了解到 python 中的代码有两种执行方式,
一个是 :python3 {expression}
另一个是 :w python3
我想做的是在 vim 中执行选定的脚本行而不刷新(关闭)python 控制台。
看起来:python3 {expression}
没有关闭python控制台,所以在我使用:python3 a=3
之后,命令:python3 print(a)
returns适当的值3
.但是,我认为这个功能没有“选择功能”。虽然 :help python
显示了 [range]
参数,但我无法理解如何使用它。
另一方面,第二个函数具有选择功能(例如 :1,3w !python3
),但似乎每次我使用该函数时 python 控制台都会刷新(=关闭)。
我想在 .vimrc 中添加简单的函数可以满足我的目的,但找不到。
非常感谢任何帮助!
我不明白这个问题。
命令
:1,3w !python3
应该可以解决这个问题,您所说的“python 每次我使用该功能时控制台都在刷新”到底是什么意思?如果你的意思是,它等待按下回车键返回 vim,这是很自然的。
您还可以使用:
:'<,'>w !python3
虽然之前使用可视模式 select 某些代码块。您想在新终端中执行代码吗window?
找到答案了!
我通过简单的自定义命令解决了这个问题。
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
中只有第 1 到第 3 行脚本
- 运行 当前行在 python
:Eval
- 运行 python
:'<,'>Eval
中视觉选择的部分脚本
范围选择与 -range 选项一起使用,并使用 python 的“exec”函数和 globals() 选项,持久性保持不变(无刷新)。
我想我的编码风格(在控制台中尝试不同的代码片段并最终确定主脚本)是一种奇怪的编码方式,因为我在社区中找不到类似的尝试。
感谢大家!
我刚开始使用 Vim 作为我的主要 IDE,而我在之前的 IDE 中经常使用的功能之一是“在 python 中执行选择”。
我了解到 python 中的代码有两种执行方式,
一个是 :python3 {expression}
另一个是 :w python3
我想做的是在 vim 中执行选定的脚本行而不刷新(关闭)python 控制台。
看起来:python3 {expression}
没有关闭python控制台,所以在我使用:python3 a=3
之后,命令:python3 print(a)
returns适当的值3
.但是,我认为这个功能没有“选择功能”。虽然 :help python
显示了 [range]
参数,但我无法理解如何使用它。
另一方面,第二个函数具有选择功能(例如 :1,3w !python3
),但似乎每次我使用该函数时 python 控制台都会刷新(=关闭)。
我想在 .vimrc 中添加简单的函数可以满足我的目的,但找不到。 非常感谢任何帮助!
我不明白这个问题。 命令
:1,3w !python3
应该可以解决这个问题,您所说的“python 每次我使用该功能时控制台都在刷新”到底是什么意思?如果你的意思是,它等待按下回车键返回 vim,这是很自然的。
您还可以使用:
:'<,'>w !python3
虽然之前使用可视模式 select 某些代码块。您想在新终端中执行代码吗window?
找到答案了!
我通过简单的自定义命令解决了这个问题。
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
中只有第 1 到第 3 行脚本
- 运行 当前行在 python
:Eval
- 运行 python
:'<,'>Eval
中视觉选择的部分脚本
范围选择与 -range 选项一起使用,并使用 python 的“exec”函数和 globals() 选项,持久性保持不变(无刷新)。
我想我的编码风格(在控制台中尝试不同的代码片段并最终确定主脚本)是一种奇怪的编码方式,因为我在社区中找不到类似的尝试。
感谢大家!