我正在Windows 7上的gVim中编辑Unity 3D .cs文件,当我双击Unity中的文件以便在现有的vim窗口中打开文件时,我会喜欢它,而是打开一个新文件。
为了解决这个问题,我使用了各种其他SO答案制作批处理文件并使用--remote-silent调用vim。这一切都与vim行为不同,它不允许在其上运行远程命令。
批处理文件:
@ECHO OFF
:Loop
IF "%1"=="" GOTO Continue
start "" "C:\Program Files (x86)\Vim\vim73\gvim.exe" --remote-silent ":sp %1<CR>"
SHIFT
GOTO Loop
:Continue
它给了我
":sp C:\my\path\file.cs" [Permission Denied] Press enter or type command to continue
我尝试删除“%1”以检查是否是提供权限错误的文件,但没有运气。批处理文件通过以管理员身份运行的快捷方式运行(在Windows中一切都不简单)
Unity - &gt;快捷方式 - &gt;批处理文件 - &gt; gVim - &gt; “:sp filename”
任何想法为什么vim不会让这个命令运行?
似乎无法在vim帮助中找到任何权限 - 远程文件或其他在google上看到此权限的人。
感谢。
* 编辑1 看起来像是奇怪的事情,如果我这样做:我在缓冲区列表中看到了这个
2 %a= ":sp C:\My\file\path.cs" line 1
喜欢将整个命令视为文件路径还是什么?
答案 0 :(得分:2)
--remote-silent
采用文件列表,而非Ex命令(嗯,您可以在文件之前通过+{cmd}
传递一个);这就是为什么Vim将你的命令解释为(不存在的)文件。
使用--remote-send
是正确的方法;与帮助示例中一样,您应该在<C-\><C-N>
之前添加以确保远程Vim处于正常模式(否则,如果您将其保留为插入模式,则命令将按字面插入!)
答案 1 :(得分:0)
我在发现缓冲区问题后自己解决了这个问题。
我将我的批次更改为以下内容:
@ECHO OFF
:Loop
IF "%1"=="" GOTO Continue
start "" "C:\Program Files (x86)\Vim\vim73\gvim.exe" --remote-send ":sp %1<CR>"
SHIFT
GOTO Loop
:Continue
看起来--remote-silent并没有按照我的想法做到。
我还将set shortmess=aoOtI
添加到我的vimrc中以阻止它提示我。