Honestly I really want to make one. Mostly because I want to stay in my terminal as much as possible, but I'm super fast with VSCode's keybindings and I can't handle the velocity drop during the learning curve.
Alternatively, if it's possible to emulate VSCode's keybindings in an existing editor, I'd be happy to go that route. I just don't know the space very well.
Yes, you're in for some disappointment there alas: many terminal applications, especially macOS terminal, will devour most cool combinations of the "meta" keys (shift, control, alt, command...) for themselves. This is why I had to make a slightly modal "select mode" entered with the escape key. I'm still trying to make it mostly familiar but 100% vscode keybindings isn't possible.
Easy fix: Use a more featureful (and more spec compliant) terminal emulator, like Kitty or WezTerm, and enable the Kitty keyboard protocol.
If you’re using iTerm, or Konsole, or Gnome Terminal, or urxvt, or… pretty much anything other than Kitty or WezTerm, you owe it to yourself to make the switch.
Personally, I use WezTerm.
Support for Windows, macOS and Linux. Better configuration. Better font rendering. Built-in fallback to Nerd Font for vscode-like icons in your editor of choice (I use neovim), so you don’t need to patch your font. Supports the Kitty keyboard protocol, and image display. Tons of features, too many to list here.
It's been a while since I looked at Alacritty, so I've tried to double check things, but feel free to add corrections in the comments in case I get some of this wrong.
Features WezTerm has that Alacritty doesn't:
1) iTerm Image Protocol (inline image display)
2) Kitty Keyboard Protocol (allows for keybindings that otherwise wouldn't be possible)
3) Semantic prompts (e.g. you can configure a keybinding to navigate in your scrollback to the previous/next prompt)
4) Built-in SSH support. Creating new tabs or panes will each create a new channel in your existing session so you won't need to re-authenticate for additional tabs that you create.
5) Alternatively, you could use WezTerm's multiplexing support. Think tmux (remote sessions persist even when you disconnect, and reconnecting gives you all of the existing windows/tabs/panes again), but graphical and built into the terminal emulator.
6) Config is written in Lua, and you can use that for clever automation, new keybindings, custom formatting of window/tab titles, etc.
7) Multiple fonts can be specified, where glyph rendering will attempt to fallback to the other fonts when not found. Advanced font shaping configuration -- you could do things like enable/disable ligatures, enable font options (if the font supports it) for alternative styling, like having zeros render with a dot or slash (to differentiate from a capital letter 'O').
Those are just some of the things I could think of real quick. Definitely recommend skimming the WezTerm documentation site.
Well there are existing tools.. one of which starts with "v" and had more than 3 decades of changes and I found it achieving the purpose you described (with a small learning curve)
Yeah Emacs is insane. It's the only editor that is so customizable that it can imitate any other editor. Obviously, that comes with some effort to do, though.
You should! It's a satisfying exercise, and it's not hard to get an editor working well enough to be useful.
I've been daily-driving my own little editor for many years now. I do like VSCode, and drop in on occasion, but it's really nice to work with a tool that only changes when I want it to change.
emacs and vim work well in the terminal and are almost certainly customizable enough to mimic the VSCode keybindings, /but/ definitely not without a velocity drop while you get everything set up as you like it
My TUI editor of choice is "joe". It allows you to freely assign keybindings through a config file. Comes out of the box with Wordstar, Vi and Emacs bindings, but it is easy to roll your own.
Alternatively, if it's possible to emulate VSCode's keybindings in an existing editor, I'd be happy to go that route. I just don't know the space very well.