我正在编辑Windows 7中的gVim中的Unity 3D .cs文件,我想双击Unity中的文件以在现有的vim窗口中打开文件,而是打开一个新文件。
为了解决这个问题,我使用了各种其他的答案来创buildbatch file,并使用–remote-silent调用vim。 这一切工作,除了VIM行为就像它不会允许远程命令运行。
batch file:
@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”来检查是否是授予权限错误的文件,但没有运气。 batch file通过以pipe理员身份运行的快捷方式运行(Windows中没有任何简单的事情)
Unity – >快捷方式 – >batch file – > gVim – >“:sp filename”
任何想法,为什么VIM不会让这个命令运行?
在vim help -remote文件或任何在google上看到这个文件的人似乎无法find任何关于权限的提及。
谢谢。
* 编辑1看起来像是一个奇怪的事情,如果我这样做:我看到这个在我的缓冲区列表
2 %a= ":sp C:\My\file\path.cs" line 1
就像把整个命令当成文件path一样呢?
--remote-silent
需要一个文件列表 ,而不是Ex命令(你可以在文件之前通过+{cmd}
传递一个文件)。 这就是为什么Vim将你的命令解释为一个(不存在的)文件。
使用--remote-send
是正确的方法; 就像在帮助例子中一样,你应该加上<C-\><CN>
来确保远程Vim处于正常模式 (否则,如果你把它放在插入模式下,命令会被直接插入!)
发现缓冲区问题后,我自己解决了这个问题。
我将我的批次更改为以下内容:
@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沉默不做我以为做的事情。
我还添加了set shortmess=aoOtI
到我的vimrc来阻止它提示我。