我正在尝试将 VIM 配置为远文件管理器中的外部编辑器。我希望能够在一个文件夹中选择多个项目,其中一些是目录,并将它们的完整路径传递给 vim 命令行。
更新:明确说明我想做什么。我希望能够在面板中选择多个文件,如下所示:
并让 vim 像这样打开:
"C:\Program Files\Vim\vim73\vim.exe" c:\src\TalkMaterials "c:\src\abba 1.txt" "c:\src\abba 3.txt"
Run Code Online (Sandbox Code Playgroud)
这将打开不同缓冲区中的所有文件。
我已经找到了完全符合您要求的解决方案。但它需要插件 FarNet 及其模块 PowerShellFar:
http://code.google.com/p/farnet/
他们还需要安装 .NET 2.0+ 和 Windows PowerShell 2.0。Windows 7 上已经存在这种情况,但早期的 Windows 版本就没那么幸运了。此外,PowerShell 2.0仅适用于Windows XP SP 3及更高版本(甚至SP 2)。
如果你还不害怕,那么这就是窍门。在外部编辑器命令中,我们通过其命令行前缀 ">:" 调用 PowerShellFar
>: & vim @(Get-FarPath -Selected) #
Run Code Online (Sandbox Code Playgroud)
就是这样。它有效,我已经尝试过(但不能用 vim,但我没有)。速度快,不用每次都启动PowerShell;Far 启动时核心会加载一次。
注意:命令中的最后一个“#”是 PowerShellFar 的一个小约定:不要将最后带有“#”的命令添加到持久命令历史记录中。该命令用于打开外部编辑器,它被写入一次,我们不希望它污染手动输入的其他命令的历史记录。
PS:以防万一,我是 FarNet 和 PowerShellFar 的作者。它们是开源的、成熟且强大的。无论如何,我都会推荐它们,只要您使用 Far Manager 并且最近的 Windows 具备这些工具的所有先决条件。