gitsigns有这么好玩的东西

473 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

前言

  • 自从入了neovim之后就觉得终端是个好东西,借助neovim基本上能够实现自己日常的办公需求了。这不今天认识了一个 gitsigns
  • 首先我们要明确一点 neovim 是一个终端操作工具,在这里我们尽量将命令进行简化为快捷键,然后通过快捷键玩出花来,我就是被这点深深吸引住的,今天gitsigns就是我们平常使用的一块git工具,于lazygit不同的是gitsigns聚焦内容的编写,而lazygit则是将焦点放在的管理上。

要求

  • 这个插件要求你的neovim不能低于0.5.0 , 好在我喜欢尝新的,目前已经是0.9.0版本了。这点完全满足

  • 另外gitsigns就是操作git的所以还需要你安装git

  • 安装路径'lewis6991/gitsigns.nvim',

命令

  • 官方推荐配置通过如下require(gitsigns).setup()即可完成自定义配置。
  • 当然 gitsigns 也提供了默认的配置。其中包括 GitSignsAdd + GitSignsChange 等方法。其中效果我们也可以自己执行下试试看。

快捷键

  • neovim 最大的特点就是使用快捷键,上面的所有的命令都是可以对应快捷键操作的。Gitsigns提供了一个on_attach回调,可用于设置缓冲区映射。因为引入了vim.keymap.set所以我的快捷键配置非常的方便。
git add与git commit一起使用,此时工作区、暂存区和版本库代码都是最新的,并新增了一条commit记录在当前分支上;
git stash与git stash pop搭配使用,git stash 后修改的代码存储在缓存区中,工作区的内容恢复到了修改前,此操作不会新增commit记录,需要取出缓存使用时用git stash pop,可跨分支使用。
注意:
新增的文件,直接执行 stash 是不会被存储的,如果要保存这个新增的文件,需要先执行下 git add 把文件加到 git 版本控制中,然后再 git stash 就可以了。
git add 可以选择只添加某个文件到暂存区中,但git stash 会直接缓存所有文件没法选择。
git stash list :查看 stash 了哪些存储
git stash show :显示做了哪些改动,默认 show 第一个存储。如果要显示其他存贮,后面加 stash@{$num},比如第二个 git stash show stash@{1}
git stash clear:删除所有缓存的stash
  • 这些是对应git的相关功能,另外如果想要真正使用gitsigns还需要明白特独有的git块,他能够在块之间来回的跳转很是方便我们日常的文件内容定位。
显示添加、修改和删除行的标志
Asynchronous
运行差异in-process(无IO或管道)✅ **通过lua或FFI。
仅为绘制的线添加符号✅ **Via Neovims装饰API
Updates immediately**光标保持时触发
确保标志始终是最新的✅ **监视git dir执行此操作
从不保存缓冲区✅ ❗ **将缓冲区(和索引)写入短期临时文件
在帅哥之间快速跳跃
阶段/重置/预览单个帅哥
范围/选择中的阶段/重置大块✅ ❗ **唯一阶段
暂存/重置缓冲区中的所有大块
撤消分段大块
缓冲区中的字差异
hunk预览中的文字差异
直接在缓冲区中显示删除/更改行✅ **通过虚拟线路
阶段部分大块
Hunk text对象
针对索引或任何提交的差异
折叠未更改的文本
显示折叠线是否已更改的折叠文本
将hunk位置加载到quickfix或位置列表中
可选的行高亮显示
可选行号高亮显示
标志可选计数
可定制的标志和映射
可自定义的额外差异参数
可以全局切换或按缓冲区切换✅ **通过分离/连接功能
Statusline integration
与yadm合作
缓冲区中的实时错误(使用虚拟文本)
Blame preview
自动跟随用git mv移动的打开文件
带完成的CLI**为某些操作提供单独的命令
打开带有任何修订/提交的diffview