VSCodeVim / VSCodeVim/Vim

Git integration freezes cursor

Open
#2,210 2 comments 14 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
15.2k
Forks
1.5k
Avg merge
3d 18h
Merged PRs (30d)
6

Description

  • Click thumbs-up 👍 on this issue if you want it!
  • Click confused 😕 on this issue if not having it makes VSCodeVim unusable.

The VSCodeVim team prioritizes issues based on reaction count.


BUG REPORT:

Environment:

  • VSCode Version: 1.18.1

  • VsCodeVim Version: 0.10.5

  • OS: ubuntu 17.10

  • All other VSCode extensions disabled

  • Empty settings.json for both user and workspace

What happened:

  • Vim movement commands (hjklwb... and arrow keys too) become unresponsive and the cursor remains stationary.
  • The unresponsiveness is triggered upon updating any file externally in a git repo containing many untracked files.

What did you expect to happen:

  • Vim motion commands should remain responsive during git refresh.
  • The arrow keys always remain responsive when VsCodeVim extension is disabled, even during git refresh, so there is a bad interaction between the VsCodeVim extension and VSCode's git component.

How to reproduce it:

  • Create a git environment with many untracked files, and trigger a git refresh by editing one of the files externally. I'm using npm as a quick way to create 2k untracked files in a new git repo.
mkdir slow
cd slow
git init
npm init --yes
npm install eslint
code .
  • Select package.json to edit
  • Wait for initial loading
  • Verify vim motion commands work
  • In a terminal: touch package.json
  • Try vim motion commands. They will lock up after a second and resume after a few seconds. Behavior likely depends on system specs, so powerful systems may require more untracked files to lengthen blocking duration.

Workarounds:

  • Create an effective .gitignore file to reduce number of untracked files.
    or
  • Disable VSCode git integration in settings.json "git.enabled": false,

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the freeze with the supplied git, npm, package.json, and external touch steps, then inspect the VSCodeVim command-handling and VS Code Git integration entry points. Done means Vim movement and arrow-key commands remain responsive during the Git refresh, with the reproduction scenario covered by a regression test if the project’s existing test setup supports it.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, typescript, vscode
Domain
devtools, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.