EDITOR
环境变量在 Windows 上可用,但在 MongoDB 2.4 中似乎有几个影响可用性的因素。当您使用
edit
命令时,
mongo
shell 会将该变量的内容写入临时 JavaScript 文件,并使用此文件路径
启动外部编辑器。然后,shell 会等待编辑器退出并检查返回代码。如果以下情况发生,则无法正常工作:
- 外部编辑器具有多文档界面并且已经打开了其他文档。
- 外部编辑器没有返回预期的 0(无错误)返回代码。
解决方法:
- 限制自己只使用单个文档编辑器来设置
EDITOR
。虽然
notepad.exe
可用,但可能有更强大的编辑器包括 JavaScript 语法突出显示。
- 如果您正在开发复杂的 JavaScript 函数,则可能希望将它们放在外部文件中。您可以使用
load("/path/to/file.js")
将最新版本的 JS 文件重新加载到 shell 中。
UltraEdit 的一些额外用户体验细节:
- (运气好的话可行)如果在从
mongo
shell 调用
edit
之前没有打开 UltraEdit 并且不打开任何额外的选项卡,则它将作为外部编辑器工作。您应该能够成功地使用
edit
从
mongo
shell 启动 UltraEdit,编辑变量,并在关闭 UltraEdit 时保存结果。UltraEdit 会提示在相同位置保存更新的 JS 文件。
- (无法正常工作)如果 UltraEdit 已经打开并且有其他文档选项卡,则它具有不同的行为。来自
mongo
shell 的
edit
命令将打开一个新选项卡,但是当您关闭此选项卡(以保存更改)时,UltraEdit 会提示 "另存为" 对话框。UltraEdit 会保存 JS 文件,但显然没有返回预期的退出代码,因此
mongo
shell 不知道 JS 文件已更新并应重新加载。
编辑:感谢 UltraEdit Expert 的建议,我找到了一个配置设置,可以使 UltraEdit 正常工作。
- 打开配置设置(高级 > 配置 菜单)
- 在 应用程序布局 > 杂项 下,启用 为从外部应用程序打开的每个文件维护单独的进程 设置的复选框
- 重新启动UltraEdit(该设置似乎要到下次启动才能生效)
启用“单独进程”设置后,您现在应该能够将UltraEdit用作外部EDITOR
并在关闭从mongo
shell打开的编辑选项卡时看到更改的反映。
$EDITOR
变量的使用与其他Linux/Unix应用程序一致。如果您需要更高级的功能,您可以考虑使用替代管理界面,看看是否有更适合您工作流程的东西。 - Stennie