
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 小时 31 分钟前 现在很少有人用 vi 了吧? |
2 Yggdroot OP @jciba5n4y6u 一直是小众。 |
3 weegc 4 小时 24 分钟前 如果在服务器上查看代码,还有比 vim 更好的解法吗? |
4 BetterJason 4 小时 13 分钟前 我司一个前端程序员,之前还是前端的组长,标榜自己用 vim 编辑器写代码效率特别高,结果我看他写的代码里面居然直接在 vue 子组件修改父组件传过来的 props 值,写一个下拉组件到处被遮挡... 就因为会吹牛逼,现在技术部部门经理感觉他厉害的很 |
5 rick13 4 小时 4 分钟前 我选择 lazygit… |
6 IsaacYoung 3 小时 39 分钟前 以前也试过 nvim lua 配置一堆,搞不动了,回归了 vscode + vim 插件 |
7 rhonin1220 3 小时 37 分钟前 赞,一直用的 LeaderF |
8 test0x01 1 小时 49 分钟前 via Android 我都是在 screen 中工作,随时切换窗口就好了,多开几个 |