我现在的工作之一是在Microsoft Office文档中构建一些动态功能。我发现唯一的方法是通过VBA - 因此,内置于Office文档中的VBA编辑器。
VBA编辑器非常糟糕。它缺少许多现代开发环境需要支持的功能。但最糟糕的部分是,我是一个硬核的 Vim 爱好者,而 VBA 编辑器几乎不比记事本好多少。
所以:有没有办法可以有效地使用 Vim 来进行 VBA 编程?除了从不同的窗口将我的代码复制粘贴到 VBA 编辑器中进行尝试之外?
我现在的工作之一是在Microsoft Office文档中构建一些动态功能。我发现唯一的方法是通过VBA - 因此,内置于Office文档中的VBA编辑器。
VBA编辑器非常糟糕。它缺少许多现代开发环境需要支持的功能。但最糟糕的部分是,我是一个硬核的 Vim 爱好者,而 VBA 编辑器几乎不比记事本好多少。
所以:有没有办法可以有效地使用 Vim 来进行 VBA 编程?除了从不同的窗口将我的代码复制粘贴到 VBA 编辑器中进行尝试之外?
我从未使用过VBA编辑器,但是我在MS Visual Studio中做了一些事情(MSVS的编辑器确实有一些不错的功能,但我仍然更喜欢vim进行大多数编辑)。
我在MSVS中打开或创建源文件。然后,我通过右键单击选项卡并选择“复制完整路径”获取文件的完整路径,并在不同的窗口中使用vim打开相同的文件。
我使用alt-tab在vim和MSVS之间来回切换。当我在vim中进行更改时,我使用:w
写入更改,然后alt-tab返回到MSVS。 MSVS编辑器注意到磁盘上的文件已更改,并提供读取更新版本的选项。
或者,如果我在MSVS中更改文件,则写入文件(文件>保存...),然后alt-tab转到vim并使用:e!
将更新的文件读入vim缓冲区。
无需复制粘贴代码,因为两个编辑器都在操作同一个磁盘文件。我只需要非常小心地不要在vim和MSVS中同时进行更改而不将文件写入磁盘。
这很丑陋,不适合每个人,但对我有效。也许它对你也有效。
我使用Cygwin,所以实际上有点复杂;Cygwin程序(包括vim)不识别Windows风格的路径。我可以这样做:
vi $(cygpath 'WINDOWS_PATH')
其中WINDOWS_PATH
是从MSVS获取的完整路径粘贴而来。单引号是必要的,以防止shell解释\
字符。如果您正在使用Windows本地vim,则此步骤不是必需的。
vi
命令调用的是vim
(在文本模式下,而不是GUI)。 - Keith Thompson这是一个有趣的观点。大约15年前,我曾经短暂地使用过VI,基于那个经验,我认为VBA编辑器比VI(或VIM?)更适合它的目的。是否有一种特定的功能从VBA编辑器中缺失,使得你不能有效地用它来进行VBA编辑?VBA多年来没有得到增强,但事实上,它无法被淘汰,因为每个人都发现它非常易于使用。
如果你愿意,你可以用你喜欢的语言编写一些代码,通过COM对象操纵你的Word文档(如果它支持)。然后你可以从简单的Word文档内部存根调用外部代码。不过,你需要克服一些安全限制。
例如,我可以用VBScript、VBA、Powershell或.Net编写一些代码来操作Word文档。我可以从一个小的VBA片段中调用它(可能附加在标准Word工具栏上的按钮上)。