MongoDB - EDITOR变量 - MongoDB shell - Windows 7

时间:2014-01-30 20:49:18

标签: mongodb shell

EDITOR变量功能是否真的适用于Windows 7?

我正在阅读一条文字说,一旦我们设置了EDITOR变量
在.mongorc.js中我们只需输入shell:编辑var_name
并且 var_name 将在编辑器中加载(在我的情况下为UltraEdit)
用于编辑。一旦我们完成了更改,我们就可以了 保存并退出编辑器;那么变量将被解析为 并加载回shell。 粗体斜体的部分
不适合我。

它只是让我在桌面上保存一些js文件?!

有什么想法吗?

编辑:

我注意到如果我将它设置为记事本(“notepad.exe”),则 它运作正常。但如果我将它设置为UltraEdit(“uedit32.exe”),则 它不会像人们期望的那样工作。

3 个答案:

答案 0 :(得分:4)

EDITOR环境变量适用于Windows,但看起来有一些因素会影响MongoDB 2.4的可用性。

当您使用edit命令时,mongo shell会使用此文件路径写入包含该变量内容的临时JavaScript文件和launches the external editor。然后shell会话等待编辑器退出并检查返回代码

如果符合以下条件,则效果不佳:

  • 外部编辑器有多文档界面,已经有其他文档打开

  • 外部编辑器不返回预期的0(无错误)返回码

变通方法

  • 限制自己使用单个文档编辑器进行EDITOR设置。虽然notepad.exe有效,但可能会有更强大的编辑器,其中包含JavaScript语法突出显示。

  • 如果您正在开发复杂的JavaScript函数,您可能希望将它们放在外部文件中。您可以使用load("/path/to/file.js")将最新版本的JS文件重新加载到shell中。

的UltraEdit

UltraEdit有一些额外的用户体验皱纹(我使用UltraEdit V20测试):

  • (运气好的话)如果在从edit shell 调用mongo之前打开UltraEdit不要打开任何额外的标签,它将作为外部编辑器。您应该能够成功使用edit shell中的mongo来启动UltraEdit,编辑变量,并查看关闭UltraEdit时保存的结果。 UltraEdit会提示将更新的JS文件保存在同一位置。

  • (不起作用)如果UltraEdit 已经打开并且有其他文档标签,则它有不同的行为。来自edit shell的mongo命令将打开一个新选项卡,但是当您关闭此选项卡(以保存更改)时,UltraEdit会提示“另存为”对话框。 UltraEdit保存了JS文件,但显然没有返回预期的退出代码,因此mongo shell不知道JS文件已经更新并且应该重新加载。

编辑:感谢UltraEdit Expert的建议,我找到了一个让UltraEdit运行良好的配置设置:

  • 打开配置设置(高级>配置菜单)
  • 应用程序布局>下;其他启用设置的复选框为从外部应用程序打开的每个文件维护单独的流程
  • 重启UltraEdit(该设置似乎在下次启动前不会生效)

启用“单独进程”设置后,您现在应该可以将UltraEdit用作外部EDITOR,并查看关闭从mongo shell打开的编辑选项卡时反映的更改。 / p>

答案 1 :(得分:2)

我的答案是对Stennie上面写的内容的补充,这篇文章太长了,无法将其添加为评论。

看起来mongo不是通过观察传递给被调用编辑器的文件的文件状态(文件大小,文件日期,文件属性)来确定文件更改,而是查看被调用编辑器应用程序的执行状态。 / p>

默认情况下,UltraEdit配置为打开同一实例中的所有文件。因此,在命令行上每次调用带有一个或多个文件名的uedit32.exe都会导致启动一个新的UltraEdit实例,该实例会加载配置设置,检测到应该使用单个实例,并在进程列表中搜索下一个已经运行的实例UltraEdit。如果已经存在另一个UltraEdit实例,那么刚启动的实例会将文件名传递给UltraEdit的另一个实例,然后自行终止。

此行为看起来在mongo的被调用编辑器中的文件上没有任何更改。

有几种方法可以更改此行为,以便在mongo调用uedit32.exe并使用要编辑的文件时始终使用UltraEdit实例。

首先,命令行选项/fni表示“强制新实例”。如果在编辑器的定义中将此命令行选项用作uedit32.exe之后的第一个参数,则通过调用mongo创建的新UltraEdit实例永远不会查找已在运行的实例并在其命令行中打开所有文件它自己的实例。

其次,可以打开菜单高级配置的分支应用布局中的配置项其他默认情况下,可以使用多个UltraEdit实例检查允许多个实例设置。

第三,通过设置允许多个实例未启用,从UltraEdit v18.10开始,可以检查从外部应用程序打开的每个文件的维护单独进程的设置UltraEdit是mongo的编辑。

答案 2 :(得分:1)

大多数documentation自然非常特定于Unix变体。这在文档本身中很明显。

在你的情况下,在mongorc.js中设置变量将在edit命令助手上提供一些启动,但结果将不会像Unix那样返回。