在cygwin中调用git commit时vim不工作

在cygwin中调用git commit时vim不工作,git,vim,cygwin,commit,vi,Git,Vim,Cygwin,Commit,Vi,我在windows下的Cygwin 64中使用git。默认编辑器vi和git使用默认编辑器。当我调用“git commit”时,在vim启动之前将提示以下消息: git commit Vim warning: output is not to a terminal Vim warning: input is not from a terminal 在此之后,vi将启动,但无法控制,'ESC',':'无法使用,我必须关闭cygwin窗口 如何使用vim进行“git提交”?您可能已经安装了git

我在windows下的Cygwin 64中使用git。默认编辑器vi和git使用默认编辑器。当我调用“git commit”时,在vim启动之前将提示以下消息:

git commit
Vim warning: output is not to a terminal
Vim warning: input is not from a terminal
在此之后,vi将启动,但无法控制,'ESC',':'无法使用,我必须关闭cygwin窗口


如何使用vim进行“git提交”?

您可能已经安装了git for Windows(msysgit)或vim for Windows。它们与Cygwin64不兼容-您需要为Cygwin配置路径以忽略这些安装

更简单的选择是卸载这两个项目,只使用Cygwin版本

如果出于任何原因需要保留它们,请将
.bash\u配置文件中的
$PATH
变量设置为覆盖。使用现有的$PATH,减去msysgit和windows vim路径。如果您对bash脚本感兴趣,可以尝试在使用bash时删除路径,并根据您的具体情况进行修改:

msysgit='/cygdrive/c/Program Files/git:'
PATH="${msysgit//$PATH/}"
msysvim='/cygdrive/c/Program Files (x86)/vim/vim74:'
PATH="${mysysvim//$PATH/}"

祝你好运

您安装的是windows版本的GIT,而不是CYGWIN版本的GIT。GIT默认附带一整套UNIX工具,包括它自己的VI版本。不幸的是,该版本的VI不能很好地与CYGWIN配合使用。最好的解决方法是在CYGWIN中安装GIT,以便使用CYGWIN版本的VI或VIM。

我也遇到了同样的问题@CYB.tachyon和@David Beckman都解释了vim id断裂的原因;但是,我没有卸载任何东西,而是在DOS风格的命令提示符下运行git命令,一切都很顺利。我想——最终——清理各种风格的vim将是我的最终解决方案,但如果你只是想继续工作,这是解决眼前问题的最快方法。

这可能是mintty造成的,请参阅

有两种修复方法:

  • 使用bash.exe而不是mintty:

    右键单击cygwin的快捷方式,将其从
    C:\cygwin64\bin\mintty.exe-i/cygwin-Terminal.ico-
    更改为
    C:\cygwin64\bin\bash.exe--login-i

  • 将正确的vim路径添加到git配置:

    git config--global core.editor“C:/cygwin64/bin/vim.exe”

    请注意,不要在路径中使用
    cygdrive
    ,因为
    .gitconfig
    无法识别它。如果您使用的是32位vim,那么路径应该是
    C:/cygwin/bin/


  • 安装Git for Windows时,必须从Git Bash Only中选择使用Git

    如果在Windows命令提示符下选择
    Use Git
    ,将导致此问题


    老实说,谁将从命令提示符使用git?;)

    更改默认编辑器可能是一个很好的替代解决方案:
    git config core.editor notepad
    您确定路径上没有其他VI吗?屏幕截图的最后一行很奇怪。
    D://..
    如果您尝试:
    TERM=xterm git commit
    @Acemad:我想使用vim或vi,而不是记事本。@matzeri:git commit后cygwin会话的行为不受监管。bash屏幕将不会从vim输出中清除,我必须终止会话。这对我来说是有效的,除了第二行(字符串替换)似乎不正确外,下面的行起了作用:
    PATH=“${PATH//$msysgit/}”
    您还必须在系统中使用正确的git当前路径名,这对我来说是
    msysgit='/cygdrive/c/Program Files/Git/cmd:'
    这不是解决方案,因为cygwin的Git有问题。德清提供了正确的解决方案。我确实遇到了这个问题,从Cygwin安装程序安装Git为我解决了这个问题。这个答案应该是公认的答案,因为它是解决问题的更简单的方法。这应该是最好的和公认的答案。到目前为止,第2点对我来说没有任何问题。(优点:能够继续使用mintty,并使用Windows本机安装的git二进制文件)最后!我花了太长时间才找到这个。工作完美。