I have found the solution that does exactly what you are asking for. But it requires the plug-in FarNet and its module PowerShellFar:
They also need .NET 2.0+ and Windows PowerShell 2.0 installed. This is already the case on Windows 7 but earlier Windows versions are not so lucky. Besides, PowerShell 2.0 is only for Windows XP SP 3 and above (not even SP 2).
If you are not yet scared then here is the trick. In the external editor command we call PowerShellFar through its command line prefix ">:"
>: & vim @(Get-FarPath -Selected) #
That's it. It works, I have tried it (not with vim, though, I do not have one). It is fast, it does not start PowerShell each time; the core is loaded once when Far starts.
Note: The last '#' in the command is a little PowerShellFar convention: to not add to the persistent command history commands with '#' in the end. This command is for opening the external editor, it is written once and we do not want it to pollute the history of other commands typed manually.
P.S. I am the author of both FarNet and PowerShellFar, just in case. They are open source, mature and robust. I would recommend them in any case, as far as you use Far Manager and recent Windows has all the prerequisites for these tools.