Git integration freezes cursor
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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