PowerShell,vim和别名与* .cmd(使用git时)

时间:2010-11-29 20:38:55

标签: git vim powershell

我有一个奇怪的问题。我在PowerShell中使用vim作为我的控制台文本编辑器。到目前为止,这种方法效果很好,我对此并没有什么问题。

以前我在一个PATH可访问文件夹中设置了一个带有批处理脚本(vim.cmd)的vim,它只是调用vim.exe,如下所示:

@echo off
"C:\Program Files\vim72\vim.exe" %*

然后我告诉git使用编辑器vim.cmd。这很好用,直到我注意到git在使用交互式rebase时执行批处理有问题。

相反,我尝试在我的PowerShell控制台中将vim设为别名:

Set-Alias vim "C:\Program Files\vim72\vim.exe"

然后我告诉git使用编辑器vim代替。这对于正常提交以及交互式变基等都非常有用。但是在使用它时我发现了一些奇怪的东西:

似乎这些可能性中的任何一种都不能正确地尊重vim的设置。当我进行提交,并且git要我在git中输入提交消息时,我看到了vim的两种不同的外观和行为;虽然在这两种情况下都应该加载相同的设置(有没有办法实际检查它?)。

以下两个屏幕截图显示了两种编辑器设置的不同之处:

vim, with batch script vim, with PowerShell alias

究竟是什么原因,有没有办法解决这个问题?我真的想保持别名版本与换行符行为(和禁用状态栏)从另一个;但理解这一点对我来说实际上更重要..

谢谢!

1 个答案:

答案 0 :(得分:1)

卫生署!感谢Doon的评论,这实际上让我意识到了。

当使用vim作为git的core.editor值时,这并不会使git完全使用PowerShell别名。相反,git从其自己的vim目录内部调用bin,该目录包含名为vim的文件,其中包含以下内容:

#!/bin/sh

exec /share/vim/vim73/vim "$@"

所以实际上git正在打开那个随Git自带的vim实例并运行它。当然,我的系统vim中的个人设置当然不存在了。

将别名重命名为其他东西片刻并尝试之后,事实证明git无法使用它,所以我想我只需更改bin目录中的vim shell脚本指向我的安装并复制一些更改以获得我想要的效果。

修改

似乎在/bin/目录中,git无法在之外自身。因此,无法从git的shell解释器中访问与git安装并行的文件夹..

猜猜我需要将我的vim安装移到共享目录中然后..好我所有其他工具都可以轻松使用不同的vim位置< _<