如何在Windows下使用gvim处理svn提交消息?

如何在Windows下使用gvim处理svn提交消息?,windows,svn,vim,Windows,Svn,Vim,在*nix下,我可以将SVN_EDITOR设置为gvim--nofork来完成这项任务,但在Windows下似乎不起作用。有什么解决方案吗?是为Git编写的,但应该直接应用 要使此功能正常工作,请尝试以下操作 创建一个单行批处理文件(名为svn_editor.bat),其中包含以下内容: “path/to/gvim.exe”--nofork“%*” 将svn\u editor.bat放在路径上 SetSVN\u EDITOR=SVN\u EDITOR.bat 完成此操作后,SVN应正确调用gvi

在*nix下,我可以将
SVN_EDITOR
设置为
gvim--nofork
来完成这项任务,但在Windows下似乎不起作用。有什么解决方案吗?

是为Git编写的,但应该直接应用

要使此功能正常工作,请尝试以下操作

  • 创建一个单行批处理文件(名为
    svn_editor.bat
    ),其中包含以下内容:
  • “path/to/gvim.exe”--nofork“%*”
  • svn\u editor.bat
    放在
    路径上
  • Set
    SVN\u EDITOR=SVN\u EDITOR.bat
  • 完成此操作后,SVN应正确调用gvim可执行文件

    注意1:gvim的--nofork选项确保它在写入提交消息之前阻塞

    注2:如果路径中有空格,则需要在gvim路径周围加引号


    注3:如果git传递带有空格的文件路径,则需要在“%*”周围加引号。

    如果已安装批处理文件(c:\windows\gvim.bat),只需将
    EDITOR
    设置为
    gvim-f
    ,批处理文件将处理-f参数并设置无fork选项

    批处理文件中的技巧是运行
    START/WAIT path\to\gvim.exe%*
    (请参阅/WAIT参数)


    如果您没有批处理文件,只需使用上面的命令创建一个新的批处理文件,并将
    编辑器设置为新创建的批处理文件。

    如果问题是传递参数以防止转向gvim(您的问题有点模糊),然后,您可以创建一个批处理文件,用所需的参数调用gvim,或者只需将以下内容添加到
    vimrc
    (而不是
    gvimrc
    )中,并指向
    SVN\u编辑器
    处的
    gvm.exe

    set guioptions+=f
    
    这告诉vim在创建GUI时不要使用fork,并且具有不必处理批处理文件的优点。有关详细信息,请参阅:

    :help gui-fork
    

    它以什么方式不起作用?你到底做了什么,发生了什么,你期望发生什么?你的问题有点模糊……如果我将
    SVN_编辑器设置为
    gvim--nofork
    ,然后执行
    SVN ci
    ,SVN不会等待gvim退出,而是发出此错误消息并退出:
    SVN:Commit失败(详细信息如下):SVN:system('gvim--nofork“SVN Commit.tmp')返回1
    。类似地,如果我将
    SVN\u编辑器
    设置为刚好
    gvim
    。多亏了zundr,问题现在解决了。谢谢大家的关注。我怀疑这就是你的意思,我只是不太确定。在这种情况下,批处理文件或调整
    vimrc
    中的
    guioptions
    都应该可以工作。是的,我确实安装了批处理文件,因此根据您的建议,我将
    SVN_编辑器设置为
    gvim-f
    ,它工作起来非常有魅力。非常感谢您的建议和解释!很抱歉你发现我的问题含糊不清。我在问如何教svn在调用
    svn commit
    时使用gvim,而不使用
    -m
    参数,并且以一种不会产生任何问题的方式。我不确定您的意思是否是svn没有查看svn\u编辑器,gvim的路径是否错误,提供的文件是否错误(例如,Tim Henigan修复的空间问题)或者这是否是一个分叉问题(由Tim Henigan、zundr和我的答案修复)。谢谢,我尝试了你建议的方法,效果很好。我想我会使用zundr的方法,因为它更容易设置和记忆。不过还是要谢谢你,+1来自我;)