如何让使用vc变得更为舒适?

考虑到目前在Windows上使用Emacs更频繁,另外希望自己的配置逐渐化繁为简,尽可能直接使用Emacs自带的功能,又因为Magit这个神器还是没法让人比较愉快地在Windows上用(WSL的方案例外,注意一下),所以目光转向了vc,但是关于这个工具的介绍似乎也不算多,想问一下社区里的各位,在用vc做版本控制操作的,这个工具是否需要增加更多配置,还是直接用默认的就好?

从来没用过啊哈哈哈,自从用了 emacs 就是一直用的 magit

vc 只是一堆 API 吧,没有像 magit 这样有序的整合。

1 个赞

默认的就行,可以加上一个agitate改善下体验,但是总的来说vc-mode基本只有最基础的功能

我之前也有和你一样的想法,因为我 Windows 用的比较多。

还认真地去试用了下 vc,习惯了 magit 后真用不了 vc。宁愿用慢点的 magit 也不想用 vc。

1 个赞

我个人过去比较习惯直接命令行,magit在windows上的表现实在是让人感觉过于沮丧了

2 个赞

:smile:命令行我也常用。

啥时候 magit 能支持 libgit2 估计才能提高体验。

其实 Git 在 Windows 上本身就慢,也不全是 magit 的问题。

是的,还是 magit 体验好。 如果要性能好,直接去用命令行就好了。

如果只用git,不用其他版本控制工具,可以加个:

(setq vc-handled-backends '(Git))

避免不必要的库加载

在dired里,用vc的接口灰度显示.gitignore的文件

虽然不是很切题,这个挺有用也贴一下:

  (defun dired-dim-git-ignores ()
    "Dim out .gitignore contents, folder/glob not handled"
    (require 'vc)
    (when-let ((ignores (vc-default-ignore-completion-table 'git ".gitignore"))
               (exts (make-local-variable 'completion-ignored-extensions)))
      (dolist (item ignores) (add-to-list exts item))))
  (add-hook 'dired-mode-hook #'dired-dim-git-ignores)
1 个赞

vc 更简单,速度更快,功能当然也更少。对于git,日常使用C-x v v 就足够了。要高级功能还是只能用magit,毕竟vc是通用的。

1 个赞

windows下开native compile的magit感觉挺好用的啊,速度非常快

这个是不是对magit也有效?

在windows上使用magit很慢,主要是慢在对git的系统调用上,为此找到了两个思路:

  1. libegit对libgit2的绑定本身已经比较全面了,只需要对magit中对git的调用换成对libegit的调用就可以一点点用起来,这个我试过,换了一些命令,快了非常多,但是仍然卡手magit-refresh (5000ms->1000ms-)
  2. 适配一个gitui的前端

好像是吧,magit有(require 'vc)

magit 里只有 (require 'vc-git) ,而且是编译和命令触发才会加载。应该没什么影响

vc 用了几天就放弃了,相比 magit 体验差太多了,有两个函数比较好用,一直在我配置中留下来了

  • vc-revert
  • vc-ignore