Vim 可以作为 OLE 服务器运行,能被任意的 OLE 客户端访问,例如: 我们可以用
Visual Basic,Python,或者 Perl 与 Vim 通信。Vim 的程序名 (在 OLE 中称为
"ProgID") 是 "Vim.Application"。
因此,要启动一个 Vim 实例 (或者要与一个已经启动的实例通信),你应该使用类似于下
面的代码:
[Visual Basic]
Dim Vim As Object Set Vim = CreateObject("Vim.Application")
[Python]
from win32com.client.dynamic import Dispatch vim = Dispatch('Vim.Application')
[Perl]
use Win32::OLE; $vim = new Win32::OLE 'Vim.Application';
[C#]
// 在项目中加入 Vim 的引用。 // 选择 COM 标签页。 // 选择 "Vim Ole Interface 1.1 Type Library" Vim.Vim vimobj = new Vim.Vim();
Vim 不能作为 "隐藏" 的 OLE 服务器来运行,这一点 Vim 不像其它一些 OLE 服务器。
Vim 的 OLE 客户端启动时,一个 Vim 程序的实例会立刻显现出来。简单地断开 OLE 连
接不能关掉 Vim 实例,需要显式地执行退出命令才可以 (例如,:qa!,:wqa)。
在 Vim 作为 OLE 服务器运行之前,必须向系统注册。如果你想注册,可以在运行 Vim
的时候加一个参数 "-register"。
-register gvim -register
如果运行 OLE 版本的 gvim 时,Vim 的 OLE 服务没有注册,gvim 会弹出一个对话框,
让你选择是否注册,选择 "Yes" 注册。
有时候可能注册不会成功,这可能是因为注册表不可写。如果是这个原因,你需要以管理
员的身份来运行 gvim。
一旦注册,Vim 的路径就会被存储到注册表里。在你移动、删除或升级 Vim 之前,应该
使用 "-unregister" 清除这些注册信息。
-unregister gvim -unregister
系统会使用最先注册的 Vim 执行 OLE 命令。如果 Vim 已经运行,那么就使用当前运行
的 Vim。如果你不想让 (多个) Vim 响应 OLE 命令,请使用非 OLE 版本的 Vim,并且把
它放到别的目录里。这时,OLE 版本的 Vim 路径不应包含在你的正常路径里,这样当你
键入 "gvim" 时启动的才是非 OLE 版本。
-silent
如果不想让 Vim 在注册时弹出对话框,可以在前面加 "-silent" 参数:
gvim -silent -register gvim -silent -unregister