使用shell对git进行了几个小时的试用后,我切换到magit
它非常整洁有效:我不需要输入“git”来再调用git命令了!
但我仍然发现比较shell命令行
有一个缺点每次输入:来调用git命令时,输出都会弹出另一个窗口。我必须输入 C-x o 才能切换回来再键入git命令。
是否有更好的方法可以在emacs中的shell模式下同时输出和观看输出?
我应该将输出重新绑定到其他模式吗?哪一个?还是更优雅的解决方案?
非常感谢
答案 0 :(得分:4)
我同意Brian的意见,你想通过一个简单的按键触发器做什么?它可能已经存在密钥绑定。如果不是,我只需要C-z
删除shell并运行命令,然后键入fg
以将emacs带回前台。
编辑:我的流程是这样的。
git diff
只是为了看看我是否有前一天的任何未提交的更改(不要忘记enabled colors!)我在命令行中执行此操作的原因与magit相关是因为我还没在emacs。emacs file1 file2
中打开未注释的文件,要么打开一些我即将处理的文件。C-c i
以打开Magit状态窗口。s
暂存这些更改,或按u
取消这些更改。s
和u
来暂存和取消代码部分。如果我在某个地方有一些调试代码并想要杀死它,那就很有用。c
以打开magit-edit-log。我输入我的提交消息,然后键入C-c C-c
进行提交。然后P
推动它。完成!请注意,这听起来像很多步骤,但它变得很快自然,整个过程实际上需要30秒才能让我完成整个变更集,分阶段进行,并用消息提交它们。一直住在Emacs。比下降到命令行要容易得多。
有时当我通过Magit进行推送时会返回错误,这通常是由我在推送之前必须拉出的远程仓库中的新代码引起的。在这种情况下,F
会再次提取更改P
以进行推送。老实说,出于某些原因,在这种情况下,我通常只需Ctrl-z
,而不是通过magit,下拉到shell,git pull
和git push
。
编辑:我想我记得Magit的默认差异颜色非常恶劣。我在我的.emacs中使用以下内容我确定我从某个地方偷走了:
;; change magit diff colors
(eval-after-load 'magit
'(progn
(set-face-foreground 'magit-diff-add "green3")
(set-face-foreground 'magit-diff-del "red3")
(when (not window-system)
(set-face-background 'magit-item-highlight "black"))))
(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG$" . diff-mode))
(eval-after-load 'diff-mode
'(progn
(set-face-foreground 'diff-added "green4")
(set-face-foreground 'diff-removed "red3")))
答案 1 :(得分:2)
当我使用Magit时,我通常使用Magit的内置命令进行大部分工作,当我需要做Magit内置命令无法做到的事情时,我只使用常规终端。几乎所有的日常使用中,Magit都有built in commands;你有什么经常使用Magit不提供的,你无论如何都不会在一个成熟的终端上做什么?
答案 2 :(得分:0)
关于magit-run*
的建议解决了这个问题。可能会扰乱对magit-run*
的其他调用,我没有进一步测试......
(defadvice magit-run* (around stay-in-magit activate)
(flet ((pop-to-buffer (buf &optional act rec) (display-buffer buf act)))
ad-do-it))