Git 与 Vim 堪称程序员的效率利器,但在 Vim 中开发时,频繁切换到终端执行 Git 命令(如 git status、git add -p、git commit),往往会打断编码心流、影响开发节奏。
现在,借助 LeaderF 内置的 Git 功能,你可以将完整的 Git 工作流无缝融入 Vim 环境,显著提升开发效率。
本文重点介绍一个核心命令:
:Leaderf git status
在 Vim 中输入上述命令,即可看到如下界面:

界面主要由两部分组成:
左侧为导航面板( Navigation Panel ),以文件树形式呈现 git status 的结果,并按状态分组:
右侧为Diff View 面板,用于展示文件的具体改动,支持两种视图:
Unified Diff View:

实现了字符级差异对比,并高亮显示差异部分。传统git diff没有高亮显示差异。
Side-by-Side Diff View:
优点:更直观,适合详细对比代码差异
两个面板协同工作:
共同构成一套流畅的 Git 可视化工作流。
在导航面板中,可对文件执行以下操作:
| 快捷键 | 功能 | 说明 |
|---|---|---|
s |
Stage / Unstage 文件 | 在 unstaged 文件上执行,文件加入暂存区;在 staged 文件上执行,文件从暂存区移出来 |
d |
Discard 文件修改 | 丢弃文件修改(有确认提示) |
D |
强制 Discard 文件修改 | 丢弃文件修改(无确认提示,慎用) |
r |
刷新文件树 | 当外部修改了 Git 状态时刷新界面 |
Enter / o |
打开对应文件的 Diff 视图 | 查看文件的详细修改内容 |
注意:s、d、D 同样适用于目录操作(包括仓库根目录)。将光标置于目录上即可执行对应操作。
在 Untracked Files 上执行 d 或 D 会删除对应文件。
导航面板中还有其他快捷键,可按 F1 查看帮助。
在 Diff 视图中,可以精细操作每个 hunk (代码块):
| 快捷键 | 功能 | 说明 |
|---|---|---|
s |
Stage/Unstage 当前 Hunk | 在 unstaged 文件上,Hunk 加入 staged ;在 staged 文件上,Hunk 移回 unstaged |
S |
Stage/Unstage 所有 Hunk | 暂存或取消暂存当前文件的所有代码块 |
d |
Discard 当前 Hunk | 丢弃当前代码块的修改(有确认提示) |
D |
强制 Discard 当前 Hunk | 丢弃当前代码块的修改(无确认提示,慎用) |
]c |
下一个 Hunk | 跳转到下一个代码块 |
[c |
上一个 Hunk | 跳转到上一个代码块 |
更多快捷键介绍:
| 快捷键 | 功能 | 说明 |
|--------|------|------|
| < | 返回导航面板 | 若导航面板已关闭,则重新打开并将光标定位到 Diff View 对应的文件上 |
| Enter | 跳到对应的文件 | 跳到对应的文件进行编辑操作 |
如需自定义快捷键,可在 .vimrc 中修改下面配置:
let g:Lf_GitKeyMap = {
\ 'previous_change': '[c',
\ 'next_change': ']c',
\ 'edit_file': '<CR>',
\ 'open_navigation': '<',
\ 'stage_unstage_hunk': 's',
\ 'stage_unstage_all_hunk': 'S',
\ 'discard_hunk': 'd',
\ 'discard_hunk_no_prompt': 'D',
\ }
在导航面板中,若已暂存需提交的更改:
c 开始提交流程以下通过一个典型场景演示完整操作流程:
查看当前状态
:Leaderf git status
分析修改
bug_fix.py 查看具体修改]c 浏览所有代码块选择性暂存
s 暂存处理新功能文件
< 返回导航面板new_feature.py进行 reviewS 暂存所有代码块(新功能的修改应一并提交)提交更改
c 开始提交整个流程均在 Vim 内完成,无需切换上下文,保持流畅的编码体验。
| 操作 | 命令行 | LeaderF |
|---|---|---|
| 查看状态 | git status(纯文本) |
可视化文件树,直观清晰 |
| 分块提交 | git add -p(交互问答) |
直接按 s 选择暂存块 |
| 丢弃修改 | git restore <file> 或 git checkout -- <file> |
一键 d 或 D |
| 跳转改动 | 需肉眼查找 | ]c / [c 快速定位变更块 |
通过 Leaderf git status,你可在 Vim 中获得一套高效、直观的 Git 工作流:
全程无需离开 Vim
" 设置全局快捷键
nnoremap <leader>gs :<C-U>Leaderf git status<CR>
1
jciba5n4y6u 4 小时 25 分钟前
现在很少有人用 vi 了吧?
|
2
Yggdroot OP @jciba5n4y6u 一直是小众。
|
3
weegc 4 小时 18 分钟前
如果在服务器上查看代码,还有比 vim 更好的解法吗?
|
4
BetterJason 4 小时 8 分钟前
我司一个前端程序员,之前还是前端的组长,标榜自己用 vim 编辑器写代码效率特别高,结果我看他写的代码里面居然直接在 vue 子组件修改父组件传过来的 props 值,写一个下拉组件到处被遮挡...
就因为会吹牛逼,现在技术部部门经理感觉他厉害的很 |
5
rick13 3 小时 59 分钟前
我选择 lazygit…
|
6
IsaacYoung 3 小时 33 分钟前
以前也试过 nvim lua 配置一堆,搞不动了,回归了 vscode + vim 插件
|
7
rhonin1220 3 小时 31 分钟前
赞,一直用的 LeaderF
|
8
test0x01 1 小时 43 分钟前 via Android
我都是在 screen 中工作,随时切换窗口就好了,多开几个
|