惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
博客园 - 司徒正美
美团技术团队
Martin Fowler
Martin Fowler
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
U
Unit 42
Y
Y Combinator Blog
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
GbyAI
GbyAI
H
Help Net Security
量子位
Last Week in AI
Last Week in AI
博客园_首页
腾讯CDC
小众软件
小众软件

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 新电脑 brew install node 之后,一个小设置可以提升对供应链投毒的防御 GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? gemini cli 貌似挂了,一直返回 403 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 只有我一个人觉得 codex 不好用? 做了个 AI + 真人专家监督的广告投放平台 Auxora, 7 个品牌跑出 6x ROAS
在 Vim 中优雅使用 Git:一种高效工作流
Yggdroot · 2026-04-17 · via V2EX

Git 与 Vim 堪称程序员的效率利器,但在 Vim 中开发时,频繁切换到终端执行 Git 命令(如 git statusgit add -pgit commit),往往会打断编码心流、影响开发节奏。 现在,借助 LeaderF 内置的 Git 功能,你可以将完整的 Git 工作流无缝融入 Vim 环境,显著提升开发效率。

本文重点介绍一个核心命令:

:Leaderf git status

查看当前 Git 状态

在 Vim 中输入上述命令,即可看到如下界面:

界面主要由两部分组成:

左侧为导航面板( Navigation Panel ),以文件树形式呈现 git status 的结果,并按状态分组:

  • Staged Changes:已暂存的文件(将被提交)
  • Unstaged Changes:工作区中已修改但未暂存的文件
  • Untracked Files:未被 Git 跟踪的文件

右侧为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 视图 查看文件的详细修改内容

注意sdD 同样适用于目录操作(包括仓库根目录)。将光标置于目录上即可执行对应操作。 在 Untracked Files 上执行 dD 会删除对应文件。 导航面板中还有其他快捷键,可按 F1 查看帮助。

代码块( hunk )级别操作

在 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',
            \ }

提交更改

在导航面板中,若已暂存需提交的更改:

  1. c 开始提交流程
  2. 系统将打开新窗口,供你填写提交信息
  3. 输入提交信息后,保存并关闭窗口
  4. 提交完成,更改已被记录到 Git 历史中
  5. 若想取消提交,清空消息并关闭窗口即可

实际工作流程示例

以下通过一个典型场景演示完整操作流程:

场景:修复 Bug 并添加新功能

  1. 查看当前状态

    :Leaderf git status
    
  2. 分析修改

    • 打开 bug_fix.py 查看具体修改
    • 使用 ]c 浏览所有代码块
    • 发现两处独立修改:一处为 Bug 修复,另一处为调试语句
  3. 选择性暂存

    • 在 Bug 修复的代码块上按 s 暂存
    • 调试语句保持未暂存状态
  4. 处理新功能文件

    • < 返回导航面板
    • 打开 new_feature.py进行 review
    • S 暂存所有代码块(新功能的修改应一并提交)
  5. 提交更改

    • 返回导航面板
    • c 开始提交
    • 输入提交信息:"修复用户登录验证问题并添加搜索功能"
    • 保存并关闭提交信息窗口

整个流程均在 Vim 内完成,无需切换上下文,保持流畅的编码体验。

为何这种方式更高效?

与传统命令行对比

操作 命令行 LeaderF
查看状态 git status(纯文本) 可视化文件树,直观清晰
分块提交 git add -p(交互问答) 直接按 s 选择暂存块
丢弃修改 git restore <file>git checkout -- <file> 一键 dD
跳转改动 需肉眼查找 ]c / [c 快速定位变更块

总结

通过 Leaderf git status,你可在 Vim 中获得一套高效、直观的 Git 工作流:

  1. 可视化查看 Git 状态
  2. 文件级暂存/取消暂存
  3. 代码块( hunk )级精细控制
  4. 快速丢弃修改
  5. 一站式提交代码

全程无需离开 Vim

配置示例

" 设置全局快捷键
nnoremap <leader>gs :<C-U>Leaderf git status<CR>