VS Code Extensions
D

Diff Vim Navigation

by MarcosHernanz

Preserve useful Git diff navigation when using VSCodeVim.

Downloads

4

Rating

(0)

Version

0.0.5

Last updated

Jun 14, 2026

Preserve useful Git diff navigation when reviewing changes with VSCodeVim.

When you are in a VS Code Git diff editor:

  • gd can jump to a definition and keep a diff editor when the target file has meaningful changes.
  • Ctrl+O can jump back to the previous diff location.
  • Unchanged files and newly added files open as normal files instead of noisy whole-file diffs.

Requirements

This extension is designed for:

Setup

The extension contributes the Ctrl+O keybindings itself.

For gd, add this VSCodeVim remap to your settings.json:

"vim.normalModeKeyBindingsNonRecursive": [
  {
    "before": ["g", "d"],
    "commands": [
      {
        "command": "diffVimNavigation.goToDeclarationPreserveDiff"
      }
    ]
  },
  {
    "before": ["g", "D"],
    "commands": [
      {
        "command": "diffVimNavigation.goToDeclarationPreserveDiff"
      }
    ]
  }
]

Do not bind g d in keybindings.json. VS Code treats g as a chord prefix in that case, which can break normal Vim commands such as gg.

Behavior

From a Git diff editor, gd asks VS Code's language providers for the target location and then opens the destination directly:

  • Modified tracked files open as Git diffs at the target location.
  • Unchanged files open as normal files at the target location.
  • Added or untracked files open as normal files at the target location.

Ctrl+O uses a small diff-local jump stack for jumps created by this extension, so returning from normal targets still lands back in the previous diff.

Limitations

This extension relies on VSCodeVim's command for jump-back navigation. If VSCodeVim changes its internal command names, Ctrl+O behavior may need an update.

Related extensions