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

推荐订阅源

Jina AI
Jina AI
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
H
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
A
Arctic Wolf
博客园_首页
S
Securelist
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Cyberwarzone
Cyberwarzone
小众软件
小众软件
T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
N
News and Events Feed by Topic
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
博客园 - 聂微东
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
H
Heimdal Security Blog
罗磊的独立博客
S
Security @ Cisco Blogs
B
Blog
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
S
Schneier on Security
月光博客
月光博客
L
LINUX DO - 热门话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

Vim

请问怎样在 GVim 中优雅地切换中英文输入法? - V2EX 有没有喜欢折腾 vim 的 - V2EX 请教一下 VIM 怎么做到类似 idea ide 一样识别函数,自动跳转,查看引用? - V2EX 现在 vim 为啥要默认进入鼠标那种模式 [插件] step-search.nvim,一个更符合直觉的多关键词聚合搜索工具 - V2EX 请问是否能修改 GVim 标题栏的颜色 - V2EX 插件: nvim-dap-unity - V2EX IdeaVim 新插件推荐: 优化搜索/命令执行框 https://github.com/yelog/ideavim-cmdfloat - V2EX vscodevim 中英文切换异常 - V2EX 写了一个 Neovim 国际化插件 i18n.nvim - V2EX Lazyvim grep 搜索,弹出来的右侧窗口怎么设置内容自动换行? - V2EX 只会:q?关于 Vim 退出方式,不会还有人知道的比我还多吧? - V2EX 求问 VS Code 中使用 Vim 插件, Normal 模式下 Tab 被接管了(Insert 模式下可以),没办法接受 AI 的代码提示,有无解决方法? - V2EX 不知道为什么存在的 vim 快捷键 - V2EX 有无公司要求开发用 Vim 编辑器? - V2EX coc.nvim 近期的主要更新 - V2EX vim 执行外部 shell 命令时卡顿,求解决方式 - V2EX 十分尴尬,被导师推荐去使用 JetBrains - V2EX Nvim 输入法的自动切换 - V2EX 写了一个 flash.nvim on ideavim 的插件 vim-flash, 有兴趣的可以试试 - V2EX 请教 Debian 12.6 的 vi 和 vim.tiny 指向同一文件却执行效果不同疑问 - V2EX nvim 无法粘贴到转存到系统剪切板 - V2EX The ObjectSense Programming Language : An object-oriented reincarnation of VimL - V2EX nvim 复制改键 - V2EX 使用 Vim 的时候遇到了一点问题 - V2EX vim 无法设置无名寄存器作为系统剪切板 - V2EX awesome-nvim-conf:中文用户 nvim 配置仓库 - V2EX 请问有办法将 nvim 当成临时草稿本使用吗? - V2EX NeoVim 可以实现远程开发么? - V2EX Leaderf git: 在 vim 中优雅高效的使用 git - V2EX 想找一个好用的 vim 剪切板的快捷键 - V2EX 关于 vim 中一次复制粘贴的询问 - V2EX 配置 nvim-lsp 自动补全有点复杂 - V2EX 今天我去 neovim 官网找图标的时候, 顺手点了一点 donate 的 btc 地址 - V2EX 轮子更新: NeoVim 主题模板 - V2EX 用了一段时间 neovim,感觉良好 - V2EX 鼠标选中文字,输入字符时能直接覆盖掉选中的文字 - V2EX lunarvim 如何修改提示的位置 - V2EX vim 有没有插件像 nvim 那样每个 buffer 右上角都有关闭按钮 - V2EX vim 的字体配色是怎么设置的? - V2EX VSCode vim 插件在 o 换行后,退出插入模式会丢失所有缩进的问题 - V2EX 各位用 vim 键位的, 是怎么解决 esc 频繁按键的问题的呢? - V2EX 有用 nvim 写 protobuf 的吗,大家用哪个 lsp ? - V2EX 用 vim/nvim 写 Python 用什么插件? - V2EX 安利一下我的键盘修改按键,解决小拇指按 shift 的困境 - V2EX VIM & Python - V2EX Vim 上远程开发有什么方案? - V2EX 除了使用方向键 vim insert mode 下如何快速前进一个字符? - V2EX wincap.vim 让你的 gvim 标题栏应用 buffer 的背景色 - V2EX (补图) vim tab 和 buffers 问题 - V2EX
在 Vim 中优雅使用 Git:一种高效工作流 - V2EX
Yggdroot · 2026-04-17 · via Vim

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

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

:Leaderf git status

在 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>