那些从 spacemacs 转到 doom-emacs 的 emacser,来说出你的故事

当初我有这个想法。但是仔细研究代码后发觉ediff只能支持特定格式的diff输出,而git diff目前我没有找到可以以这样特定格式输出的选项。

以下是ediff的代码,注意其说明了对diff的-u-c不支持

(defcustom ediff-diff-options
  (if (memq system-type '(ms-dos windows-nt)) "--binary" "")
  "Options to pass to `ediff-diff-program'.
If Unix diff is used as `ediff-diff-program',
then a useful option is `-w', to ignore space.
Options `-c', `-u', and `-i' are not allowed. Case sensitivity can be
toggled interactively using \\[ediff-toggle-ignore-case].

Do not remove the default options. If you need to change this variable, add new
options after the default ones.

This variable is not for customizing the look of the differences produced by
the command \\[ediff-show-diff-output]. Use the variable
`ediff-custom-diff-options' for that."
  :set 'ediff-set-diff-options
  :type 'string)

我使用ediff很有限,主要是用作mergetool的除了vimdiff外一个备选工具。所以ediff是否使用git对我效率影响不大。不过这个思想也没有完全浪费。

在我的工作流中比较两段相似代码是非常频繁的操作,所以我把git diff的命令和magit结合起来了, 见 emacs.d/init-misc.el at master · redguardtoo/emacs.d · GitHub 中的diff-region-compare-with-b

明白了,确实我调查ediff和git diff output格式也没找到简单的配起来的方法。我再想想怎么用在我的日常工作里。多谢!

最近放弃使用ediff 了, ediff 的三个窗口模式太占空间, 现在直接用smerge ,在magit 中直接打开有冲突的文件, 默认就是起用了xmerge-mode 的。 并且 我用evil 的时候, “c” 这个键的功能一直没用过, 现在把绑定到smerge-basic-map

(evil-define-minor-mode-key 'normal 'smerge-mode (kbd "c") smerge-basic-map)

然后基本操作变成了以下几个键:

cn/cp next/previous hunk

cu (upper) 选择上面的部分,cl (lower) 选下部分

ca 两部分都要

cRET 选择光标所在的部分

请教spacemacs和doom-emacs哪个版本管理更好,第三方包经常升级,总要引入不兼容的错误,我希望越稳越好

不升级最稳

1 个赞