在Windows下使用emacs作为编辑器提交git

在Windows下使用emacs作为编辑器提交git,windows,git,emacs,Windows,Git,Emacs,在Windows中使用git bash,我将我的core.editor设置为: c:/program/emacs-24.2/bin/emacs --no-splash -geometry 110x58+200+2 在git提交时,一个新的emacs框架按预期打开。打开的缓冲区的名称为$@。我无法保存缓冲区并退出emacs。Git抱怨提交消息是空的 我有一个解决办法,就是将我的core.editor设置为: c:/program/emacs-24.2/bin/emacs --no-splash

在Windows中使用git bash,我将我的
core.editor
设置为:

 c:/program/emacs-24.2/bin/emacs --no-splash -geometry 110x58+200+2
在git提交时,一个新的emacs框架按预期打开。打开的缓冲区的名称为
$@
。我无法保存缓冲区并退出emacs。Git抱怨提交消息是空的

我有一个解决办法,就是将我的
core.editor
设置为:

c:/program/emacs-24.2/bin/emacs --no-splash -geometry 110x58+200+2 .git/COMMIT_EDITMSG
这是可行的,但有几个缺点:

  • 我必须在包含.git文件夹的目录中。如果我在子目录中,它将不起作用
  • 打开的emacs框架有两个窗口,一个是
    COMMIT_EDITMSG
    ,一个是
    $@

是否有更好的方法选择emacs作为提交编辑器(除了在终端中打开它)?

我建议您

  • -但显然,这只是unix,或者
  • 像往常一样运行
    Emacs
    ,并使用
    M-x server start RET
    启动服务器,或将
    (服务器启动)
    添加到
    。Emacs
如果您坚持从命令行运行
git
,请使用
emacsclient
而不是
emacs
作为
核心编辑器

但是,将
Emacs
git
一起使用的最佳方法是
vc


Emacs
中,键入C-x v d your/git/repo/root/dir RET以获取修改文件的列表,用m标记要提交的文件,键入C-x v v以提交它们-将显示提交消息的缓冲区(使用
ChangeLog
条目为您初始化,如果有),编辑它,键入C-C-C,您就完成了。

在emacs中为git提供了另一个非常好的接口。
magit
背后的思想是在emacs中为您提供一个交互式界面,以便轻松运行所有常用的git命令,基本上不需要您直接从命令行运行
git


尽管它不是标准的(与另一个答案中提到的
vc
)不同,您可以使用打包系统(例如从或存储库)非常简单地安装它。

这在msysgit 1.7.11下适用于我:

git config core.editor '/d/bin/emacs-24.3/bin/emacs.exe'
但当我换成这个的时候:

git config core.editor '/d/bin/emacs-24.3/bin/emacs.exe --no-splash'

我得到了与您相同的“$@”缓冲区。

谢谢您的提示。我一直在使用egg,目前正在研究magit(用于emacs集成)。我会给vc一个机会,但有时我还是想从bash那里承诺。我也一直在考虑将Emacs作为一个守护进程运行,但它似乎在windows上运行得不太好
--daemon
不是一个有效选项。@Gauthier:即使您启动了常规的emacs(非daemon),也可以使用
EmacClient
;然而,我发现我确实在windows上使用了emacs守护进程;你的emacs可能是旧的吗?正如sds的链接所描述的那样,我对把emacs作为系统守护进程启动持怀疑态度,你可以告诉任何emacs成为服务器;请参阅EmacClient手册页,但简短的形式是从运行的emacs运行
M-x server start
,然后将其保留;编辑完客户端弹出的任何缓冲区后,点击
C-x#
24.3.1。EmacClient需要
--服务器文件
--备用编辑器
(或相应的环境变量)。我想当然地认为服务器文件是由
emacs--daemon
创建的,但也许我错了?@jthill:这很好。我将不得不在手册页上读更多的内容。这不是一个正确的答案。只有当你解决了OP的问题,你才应该发帖。否则,请将其发布在评论部分