善用Vim:成为任意程序的外部编辑器b

Vim是如此好用,以致于很多用户希望把所有地方的文本编辑工作都交给Vim来做。“一款程序只做一件事,但做到极致”、“其他程序有此需求则调用该程序”的思路,是 UNIX的精髓之一。但很不幸,Windows下的软件却往往不是这样。比如很多资料管理软件,花费精力去做编辑功能,不如直接支持外部编辑器。   借助vbs脚本,通过剪贴板,加上vim脚本,在windows下基本可以实现这一需求。借助AutoHotkey等脚本工具,也可实现类似功能,详见 Use gvim as an external editor for Windows apps

1. 下载必要的vim脚本,解压到vim/plugin目录

2. 修改和设定vbs脚本

  把下面的内容保存为 .vbs文件(建议名称 all2vim.vbs),放在任意目录(建议vim/vimfiles)。

set oShell = CreateObject("WScript.Shell") oShell.SendKeys"^a" oShell.SendKeys"^c" oShell.SendKeys"^{Home}" ReturnCode = oShell.run ("""d:Program Filesvimvim72gvim.exe"" +ClipBrd +only",0,True) oShell.SendKeys"^a" oShell.SendKeys"^v" oShell.SendKeys"^{Home}"

  注意:gvim.exe的路径与你的安装相符。   然后,为allvim.vbs在桌面创建快捷方式,右键→属性→快捷键,比如设定为ctrl+alt+e

3. 使用也很简单

  现在,在任何支持“ctrl+a全选、ctrl+c复制、ctrl+v粘贴”的输入框、文本框、编辑框中,按下ctrl+alt+e,则调用gvim编辑当前内容。   编辑完成后,:wq退出,见提示信息按下y,则原编辑内容就会自动更新。

4. 缺点

  如果在编辑过程中,切换了原文本框的焦点、或者切换了激活窗口、或在网页中切换了激活tab,都有可能导致内容发送到错误的目标。

附录:文章更新历史

  2010-02-11: 首次发布。   2009-02-02: 在EverNote中完成初稿。