VSCodeVim / VSCodeVim/Vim

Alt+<Keys> should behave like Esc, <Keys> in sequence

Open
#8,295 1 comment 3 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

Is your feature request related to a problem? Please describe.
In nearly all terminal emulators I've used, I can with the default configuration press Alt+<keys> as a more ergonomic way to press Esc and then <keys>.

This trick is possible because of how terminals encode Esc and Alt. They are basically the same, except Esc is a sticky Alt.

For example, Alt+Space leaves insert mode without moving the cursor backward. Alt+J and Alt+K can be used to start moving vertically. Alt+Shift+; (equivalent to Esc, :) can be used to start entering a new command.

It's a little jarring to my muscle memory when it doesn't work in VSCode

Describe the solution you'd like
For any Alt+<keys> sequence not intercepted by the OS, browser, or VSCode bindings, it should be handled equivalently to Esc, <keys>

Describe alternatives you've considered
Binding every possibility manually: This is obviously inconvenient but works for ones I can think of beforehand.

The more complicated the configuration process is, the more I tend to convince myself I should deal with the defaults.

Additional context
I'm not the only one with this habit: https://github.com/VSCodeVim/Vim/issues/7436

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 investigating how VSCodeVim receives and processes Alt key sequences, including which sequences are intercepted by the OS, browser, or VSCode bindings. Done means an unhandled Alt+keys sequence behaves like Esc followed by those keys, while existing bindings and intercepted sequences remain unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript, vscode
Domain
developer-experience, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.