![如何在 FarManager 中将 vim 设置为外部编辑器,并传递完整路径名?](https://linux22.com/image/1255535/%E5%A6%82%E4%BD%95%E5%9C%A8%20FarManager%20%E4%B8%AD%E5%B0%86%20vim%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%A4%96%E9%83%A8%E7%BC%96%E8%BE%91%E5%99%A8%EF%BC%8C%E5%B9%B6%E4%BC%A0%E9%80%92%E5%AE%8C%E6%95%B4%E8%B7%AF%E5%BE%84%E5%90%8D%EF%BC%9F.png)
我正在尝试将 VIM 配置为我的外部编辑器远程文件管理器。我希望能够选择文件夹中的多个项目,其中一些是目录,并让它们完整路径传递给 vim 命令行。
更新:明确说明我想要做什么。我希望能够在面板中选择多个文件,如下所示:
并像这样打开 vim:
"C:\Program Files\Vim\vim73\vim.exe" c:\src\TalkMaterials "c:\src\abba 1.txt" "c:\src\abba 3.txt"
这将打开不同缓冲区中的所有文件。
答案1
我找到了完全符合您要求的解决方案。但它需要插件 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) #
就是这样。它有效,我试过了(不是用 vim,我没有 vim)。它很快,它不会每次都启动 PowerShell;Far 启动时核心会加载一次。
注意:命令中的最后一个“#”是 PowerShellFar 的一个小约定:不要将以“#”结尾的命令添加到持久命令历史记录中。此命令用于打开外部编辑器,它只写一次,我们不希望它污染手动输入的其他命令的历史记录。
PS 我是 FarNet 和 PowerShellFar 的作者,以防万一。它们是开源的、成熟的和强大的。无论如何,只要您使用 Far Manager,我都会推荐它们,而且最近的 Windows 具备这些工具的所有先决条件。
答案2
我能想到的最接近的vim !&这将创建以下命令行
"C:\Program Files\Vim\vim73\vim.exe" TalkMaterials "abba 1.txt" "abba 3.txt"
这似乎工作得很好,但无论如何我都希望将完整路径传递给 vim。在接受我自己的答案之前,我想看看是否有办法将所有完整路径传递给 vim。