【发布时间】:2011-05-08 14:52:46
【问题描述】:
我写了一个非常简单的 vim 插件和 python 脚本来测试两者之间的一些通信。我的 vim 脚本如下所示:
function! HelloWorld()
silent :!python helloworld.py
endf
nmap <C-P> :call HelloWorld()<CR>
那么我的 python 脚本如下所示:
import os;
os.system( 'mvim --servername VIM -u NONE -U NONE --remote-send \"<C-\\\\><C-N>:echo \'Hello World!\'<CR>\"' )
如果我在 vim 中并按 ,使用 ":call HelloWorld()" 命令,或者只是从同一个或另一个 mvim 或 vim 实例中输入 ":!python helloworld.py",什么都不会发生。但是,如果我从命令行单独调用脚本,mvim 会做出适当的响应:显示“Hello World!”沿着底部。
有谁知道为什么从 vim 调用时它不起作用?
【问题讨论】:
-
好奇你为什么称它为 mvim 而不是 gvim?
-
我认为 mvim 是 macvim 的缩写形式 code.google.com/p/macvim
-
你知道你可以重新编译 Vim 以便它在内部与 Python 接口吗?无需在命令行中运行 Python 的僵硬杂物;与内置支持的接口更容易、更快、更灵活、更强大,只需要重新编译 Vim。请参阅
:h python的帮助。 -
@Herbert 我对 python 编译选项略有了解。如果我打算向公众发布我的插件,那么依赖使用 python 选项编译 vim 真的有意义吗?例如,我使用了很棒的 Command-T 插件,但我真的希望我不必自己构建 vim 来使用它。我想我更喜欢大多数插件开箱即用,除非自定义构建有非常大的性能优势,但考虑到 vim 的用户群无论如何都会非常技术性,我是否低估了用户进行自定义构建的意愿?跨度>
-
你说得对,这是不想使用内置 python 支持的正当理由。但是,如果计划是分发,那么在 VimScript 中构建它似乎会更好,因为即使您对 python 的外部调用也会在某些系统上出现问题(我在这里特别考虑 Windows)。也许这取决于你想要的是否已经在 python 中完成。