title: "善用Vim:成为任意程序的外部编辑器b"
date: 2010-02-11
categories:
- "office-work"
- "text-editor"
tags:
- "gvim"
draft: true
善用Vim:成为任意程序的外部编辑器b
Vim是如此好用,以致于很多用户希望把所有地方的文本编辑工作都交给Vim来做。“一款程序只做一件事,但做到极致”、“其他程序有此需求则调用该程序”的思路,是 UNIX的精髓之一。但很不幸,Windows下的软件却往往不是这样。比如很多资料管理软件,花费精力去做编辑功能,不如直接支持外部编辑器。 借助vbs脚本,通过剪贴板,加上vim脚本,在windows下基本可以实现这一需求。借助AutoHotkey等脚本工具,也可实现类似功能,详见 Use gvim as an external editor for Windows apps。
把下面的内容保存为 .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
现在,在任何支持“ctrl+a全选、ctrl+c复制、ctrl+v粘贴”的输入框、文本框、编辑框中,按下ctrl+alt+e,则调用gvim编辑当前内容。 编辑完成后,:wq退出,见提示信息按下y,则原编辑内容就会自动更新。
如果在编辑过程中,切换了原文本框的焦点、或者切换了激活窗口、或在网页中切换了激活tab,都有可能导致内容发送到错误的目标。
2010-02-11: 首次发布。 2009-02-02: 在EverNote中完成初稿。