持续创作,加速成长!这是我参与「掘金日新计划 · 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 |