magit实在是好用,而且它的很多操作都非常合理科学顺手。但是只能在emacs中用。
有没有可能,或者有没有人作过,作为一个单独的工具复制magit的操作和界面,独立运行。这样即便不用emacs的人也可以用它了。
很久之前我用过一个命令行工具tig。就是git的界面工具。当时感觉也挺好用的。但是和magit没法比。如果有一个类似tig的magit就好了。
magit实在是好用,而且它的很多操作都非常合理科学顺手。但是只能在emacs中用。
有没有可能,或者有没有人作过,作为一个单独的工具复制magit的操作和界面,独立运行。这样即便不用emacs的人也可以用它了。
很久之前我用过一个命令行工具tig。就是git的界面工具。当时感觉也挺好用的。但是和magit没法比。如果有一个类似tig的magit就好了。
不如单独写一个 init.el 给特定的 emacs 用,比单独写一个应用简单多了,再 alias 一下,齐活
有很多类似的开源软件,比如 gitui . 当然你可以自己移植,或者重新写一个类似的 tui/gui 应用.
lazygit?
lazygit 还是照 magit 差不少,magit 是我离不开 emacs 的(几乎是)唯一理由,org-mode 之类的都有类似的替代,唯一这个没有
如果可以的话简直是我这类还没入门emacs的人的福音啊! 我曾长期使用vim-fugitive,最近逐步迁移到了自己写的插件上,在实现过程中一直想从magit中汲取灵感,但只是粗略地读了一些文章,真的是囫囵吞枣,没尝出啥味道。
Magit 作者说 Magit 实现了 90% 左右的 git 功能,其他 GUI 或 TUI 大多卡在 60% 左右的程度。60% 可能也够覆盖日常场景了,只不过易用性难比 Magit。所以既要 90% 左右的 git 功能,又要 magit 的易用,应该很难有替代了,只要其一兴许有。
这样也是一个好办法。magit也用不着什么复杂的配置。只需要把emacs的启动退出结合一下就可以。
我只用magit的1%功能。就是最常见的分支,合并,提交,看日志。。。 平时也用不到太多复杂的功能。magit确实方便。
vim的fugitive 用起来怎么样?
几行init.el和shell alias就完了:magit
命令直接打开emacs打开当前目录的magit,在magit status按q
不只退出magit,退出整个emacs。再优化一下,开个server,magit
时使用client
就我的使用来说,vim-fugitive基于vim的内置功能(tabpage、terminal、syntax highlight、keymaps)和vim使用习惯提供了对git cli的包装;相比cli,它利用vim buffer显示git命令的输出,也会对内容进行一定程度的解析再绑定一些操作到解析的对象,这些操作比直接敲命令快不少,而且能显示、保留上下文信息。我最多使用的是功能(用git cli来说):status
+{add -p, reset -p}
+commit -v
、log
+show obj
、blame
、diff
+loclist
。前者对应fugitive的:0Git
,后者对应:GV。
就我用到的工作流来说,它比git cli用起来流畅;但我并没有把所有操作都用它来做,分支操作、合并、rebase还是git cli,只不过我有时会在vim里调个浮动终端出来而不是退出vim或单开个终端再敲。
我找着看过magit的介绍、用法视频,tldr! 没上手始终体会不到它与vim-fugitive的区别。而且直接用emacs好多按键我也不熟悉,我望而却步到现在…
这就是我目前的做法。我有一个轻量的配置 init-lite.el
,里边包含最基本的编辑功能,也包括 magit。
alias emacs-lite='emacs -nw -Q --dump-file ~/.emacs.d/init-lite.pdmp -l ~/.emacs.d/init-lite.el'
alias magit='emacs-lite -f magit-status'
但我其实并不常用 magit,而是把 emacs-lite
用做命令行编辑器 $EDITOR (C-x C-e) 和 git editor:
$ cat (which $EDITOR)
emacs -nw -Q --dump-file ~/.emacs.d/init-lite.pdmp -l ~/.emacs.d/init-lite.el --eval "(cli-editor-init '${shell_type})" $@
$ git config --get core.editor
emacs -nw -Q --dump-file ~/.emacs.d/init-lite.pdmp -l ~/.emacs.d/init-lite.el --eval "(setq init-git-editor t)"
Emacs everywhere。
已经把 magit 当作独立工具用了很久了,这是我的实践:
function egit { zsh -c "TERM=xterm-24bit emacsclient -nw --eval '(magit-status)'" }
这样用 zsh 在一个 git repo 内部时打 egit
命令就能在当前终端用 magit:lua require("toggleterm.terminal").Terminal:new({cmd="TERM=xterm-24bit emacsclient -nw --eval '(magit-status)'", direction="float"}):toggle()
这思路很灵活啊,让emacs以tui+client的方式运行在nvim里。不过我觉得相对来说难点是’安装配置好magit’这步。
emacs怎么也配个单独的tabpage吧?像这样:tab terminal TERM=xterm-24bit emacsclient -nw --eval '(magit-status)'
。这个xterm-24bit
的TERM第一次见,我系统装了xterm都没有,不是笔误吗?
印象里面和 emacs 在 tmux 下的色彩显示有关系,具体细节不记得了
可能是因为有许多bug非常影响使用,半年没有用了,不清楚现在进展如何
magit安装配置也很简单。我都没用任何配置,直接加载了它,用默认的就挺够用的了。
另外,我的颜色设置是这样的,目前没遇到什么颜色问题:
.bashrc export COLORTERM=truecolor
.tmux.conf
set -g default-terminal “xterm-256color” set-option -sa terminal-overrides ‘,xterm-256color:Tc’