向vim(mvim)发送命令的python脚本

2024-04-20 12:44:31 发布

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

我编写了一个非常简单的vim插件和python脚本,试图测试两者之间的一些通信。我的vim脚本如下所示:

function! HelloWorld()
    silent :!python helloworld.py
endf

nmap <C-P> :call HelloWorld()<CR>

然后我的python脚本如下所示:

^{pr2}$

如果我在vim中按,请使用“:call HelloWorld()”命令,或者只键入“:”!python地狱世界.py“从同一个或另一个mvim或vim实例来看,什么都没有发生。但是,如果我从命令行单独调用脚本,mvim会相应地响应:显示“helloworld!”沿着底部。在

有人知道为什么从vim调用时它不起作用吗?在


Tags: py命令脚本插件functionvimcallnmap
1条回答
网友
1楼 · 发布于 2024-04-20 12:44:31

尝试更换

silent :!python helloworld.py

^{pr2}$

(重点是在远程命令到达之前返回vim)。如果它可以工作,那么问题是在接收shell输出的同时处理远程命令。您还可以尝试其他解决方法:

call system('python helloworld.py')

你说

call system('python helloworld.py &')

以及

pyfile helloworld.py

(注意,最后一个需要使用+python特性编译的vim,并且还改变了vim使用的python解释器的状态)。在

顺便说一下,当您不想看到脚本输出时,请使用system()调用而不是{}。也可以在silent !之后使用redraw!。在

相关问题 更多 >