All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
⚙️ Require setting reconfiguration
⌨️️ Require keybinding reconfiguration
See Configuration section on our website
- Fixed
SPC T T(toggle editor tabs) with the new API
- Add C major mode key bindings
- Add R Package bindings in R Mode
- Add R create terminal in R and Quarto mode with
SPC m mandSPC m '.
- Fixed render in Quarto mode
- Changed Quarto Run current cell to
SPC m S.
- Add window layout bindings
SPC w 1to open single column window layoutSPC w 2to open double column window layoutSPC w 3to open triple column window layoutSPC w 4to open grid window layout
- Fixed outdated Flutter commands
- Fix command bindings for Clojure refactorings
- Standarize refactor rename for Python and rust
- Add Elixir major mode
- ⌨ Added whichkey menu for
gin magit buffer which supportsg gto move cursor to the top. - Added
SPC $to quickly run recent commands on terminal.
SPC w+h,j,k,lnavigate to the expected directionSPC w mmaximizes the window as expected, whileSPC w Mchanges to maximize the window without hiding other windows
- Add
SPC T Mto toggle minimap. - Added a R and Quarto major-mode
- Added
SPC b <int>commands for jumping to buffers 0-9
- ⚙ Use built-in command for visual mode indention
- Add a CUDA-C++ major mode
- Sort the bindings again
- Fix the
vspacecode.configurecommand which configures default settings and keybindings
- Use img.shields.io for badge service instead in README.md
- Replace badges' domain to vsmarketplacebadges.dev in README.md
- Add Java major mode
- ⌨️ Add
ctrl+j/k/las a shortcut to traverse items in code action - Add
SPC b Rto revert current buffer. You can use it to discard unsaved changes. - Add confirmation for configuration commands
- Clojure major mode: fix duplicate command name –
SPC m e l(calva.clearInlineResults) is now named "Clear inline evaluation results" - Improve
SPC f R. Now it works more consistently.
- Replace initial notification with walkthroughs
- Add major mode for ObjectPascal
- Support running test on arm mac
- Fix CVE-2021-44906 by updating
minimist
- Python major mode:
SPC m r mandSPC m r vcommands have been removed, as they no longer do anything.SPC m r .has been added in their stead, which now invokes the built-in refactor methods.
- Add major mode for PHP
- Add basic major modes bindings for JavaScript/TypeScript
- Add major mode for Julia
- Add major mode for Coq
- Add major mode for Agda
- Unify the name to "Go to symbol in buffer" of
SPC g sfor ruby and fsharp - Unify the name to "Go to symbol in project" of
SPC g Sfor ruby
- Fix testing commands
<SPC> m t ...for python major mode
- Add Tasks-related SPC bindings (start with
SPC :)SPC : .to rerun last taskSPC : bto run build taskSPC : cto configure task runnerSPC : gto show running taskSPC : xto terminate taskSPC : lto show task logSPC : tto run test taskSPC : :to run taskSPC : Rto restart running task
- Add error-related bindings
<SPC> e eto show an error<SPC> e fto fix an error
- Add additional bindings in Rust major mode
- "+Action" menu (
<SPC> m a):<SPC> m a ato execute code action<SPC> m a fto execute fix action<SPC> m a sto execute source action<SPC> m a rto show "+Refactor" menu<SPC> m a r .to execute refactor action<SPC> m a r rto rename symbol
- "+Go to" menu (
<SPC> m g):<SPC> m g dto go to definition<SPC> m g hto show call hierarchy<SPC> m g ito go to implementations<SPC> m g rto go to references<SPC> m g sto go to symbol in buffer<SPC> m g tto go to type definition<SPC> m g Sto go to symbol in project<SPC> m g Ito find implementations<SPC> m g Rto find references
- "+Peek" menu (
SPC m G):<SPC> m G dto peek definition<SPC> m G hto show call hierarchy<SPC> m G ito peek implementation<SPC> m G rto peek references
- "+Action" menu (
- Add open-link in Text related commands (
SPC x o) - Add support for web extension
- Add
<spc> d Cto continue debug to cursor
- Unify existing "+Go to" menu in major modes to our convention
- Fix "Go to test/implementation file"
<SPC> m g tfor dart major mode
- Add major mode for Dart/Flutter
- Update some bindings in the go to menu for Go lang
- Add
g cto peak call hierarchy - Add
g Cto show call hierarchy in the side bar - Change
g ito go to implementations from go to symbol which exists in<spc> j i - Change
g Ito find all implementations from show all symbols which exists in<spc> j I - Remove
g mas the command is not valid - Move
t ttoggle test tot T - Move
t ftest function at cursor tot t - Move
t Ftest file tot f
- Add
- Add additional refactoring bindings in Python major mode
r vto extract variabler mto extract method
- Use the newer whichkey menu registering API, which means this version require v0.9 and above of whichkey to work.
- Add
bbackend to Python major mode - Add
<spc> .to repeat most recent action - Add
<spc> r .to show recent actions - Add
<spc> ?to search keybindings - Add icons to most default bindings (See #206 for the tracker)
- Fix the missing
+prefix for "Go to" key in python major mode - Fix
<spc> 0command when triggered in file outside of workspace
- Add Rust major mode key bindings
- Add F# major mode key bindings
- Add C# major mode key bindings
- Add C++ major mode key bindings
- Add LaTeX major mode key bindings
- Add functions to Python "major mode" (
<spc> m). Most functions require the Python extension to be installed.- "Go to commands..." menu (
<spc> m g):<spc> m g dto go to definition<spc> m g eto go to errors/problems<spc> m g gto go to definition<spc> m g ito find symbol in file<spc> m g rto peek references<spc> m g Dto peek definition<spc> m g Ito find symbols in project<spc> m g Rto find all references
- "Go to commands..." menu (
- Change the order of the spacemacs to be more aligned with spacemacs
- ⌨ Trigger vspacecode when sidebar is in focus
- Add
<spc> b h/j/k/lfor directional editor moving - Add
<spc> c cto compile the project - Add
<spc> S nto show notification center - Add
<spc> j cfor previous change,<spc> j Cfor next change - Add Ruby major mode key bindings
- Add Python major mode key bindings
- Add Clojure major mode key bindings to support the Calva extension for Clojure & ClojureScript development
- Move "Format buffer" action from
<spc> f =to<spc> j +
- Add
<spc> h Dto open VSpaceCode documentation website - Add
<spc> p cto run the default build task for the current project - Add
<spc> p Tto run the default test task for the current project - Add
<spc> 0to show active file in explorer
- Indicate submenus with
+instead of...
- Add
<spc> z f j/kto zoom out/in frame - Add
<spc> z x j/kto zoom out/in text
- Focus on the search result after
<spc> * <spc> b bshows recent buffers first
- ⚙️ Add
,to trigger major mode - Add functions to Go "major mode" (
<spc> m). Most functions require the Go extension to be installed.<spc> m <spc>to show all Go extension commands- "Format..." menu (
<spc> m =):<spc> m = =to format document<spc> m = dto format document with... (choose formatter)<spc> m = mto format modified lines only<spc> m = sto format selection<spc> m = Sto format selection with... (choose formatter)
- "Actions..." menu (
<spc> m a):<spc> m a Pto run code in Go Playground- "Package actions..." menu (
<spc> m a p):<spc> m a p bto build current package<spc> m a p gto get a package<spc> m a p ito install current package<spc> m a p lto lint current package<spc> m a p sto browse packages<spc> m a p vto vet current package
- "Workspace actions...." menu (
<spc> m a w):<spc> m a w bto build workspace<spc> m a w lto lint workspace<spc> m a w bto vet workspace<spc> m a w pto add package to workspace
- "Backend/environment..." menu (
<spc> m b):<spc> m b eto choose Go environment<spc> m b gto show current GOPATH<spc> m b ito install/update tools<spc> m b lto locate configured Go tools<spc> m b Rto restart language server
- "Go to..." menu (
<spc> m g):<spc> m g dto go to definition<spc> m g Dto peek definition<spc> m g eto go to errors/problems<spc> m g gto go to definition<spc> m g ito find symbol in file<spc> m g Ito find symbol in project<spc> m g mto go to method in file<spc> m g rto peek references<spc> m g Rto find all references<spc> m g tto go to type definition<spc> m g Tto peek type definition
- "Insert/remove..." menu (
<spc> m i):<spc> m i fto fill struct<spc> m i ito add import<spc> m i Ito generate interface stubs<spc> m i tto add tags to struct fields<spc> m i Tto remove tags from struct fields
- "Refactor..." menu (
<spc> m r):<spc> m r .to quick fix<spc> m r eto extract to function or variable<spc> m r rto rename symbol
- "Test..." menu (
<spc> m t):- "Benchmarks..." menu (
<spc> m t b):<spc> m t b fto benchmark function at cursor<spc> m t b fto benchmark file<spc> m t b fto benchmark package
<spc> m t cto cancel running tests<spc> m t dto debug test at cursor<spc> m t fto test function at cursor<spc> m t Fto test the current file- "Generate..." menu (
<spc> m t g):<spc> m t g fto generate unit tests for function<spc> m t g Fto generate unit tests for file<spc> m t g pto generate unit tests for package
<spc> m t lto test previous<spc> m t pto test package<spc> m t Pto apply cover profile<spc> m t sto subtest at cursor- "Toggle..." menu (
<spc> m t t):<spc> m t t cto toggle test coverage in current package<spc> m t t fto toggle open test file
<spc> m t wto test packages in workspace
- "Benchmarks..." menu (
- Speed up vscode startup by deferred extension activation
- Reorder the default keybindings in alphabetical order similar to spacemacs
- Fix the issue where config default setting command normalized existing vim's keybindings (e.g.
<space>to ``) and can cause duplicate keybindings. - ⌨️️ Fix the inability to enter space key in any input when there is no editor opened
- Keep cursor position after
<spc> b Y - Fix the item name of
<spc> j =
- Add functions to Markdown "major mode" (
<spc> m). Most functions require the Markdown All in One extension to be installed.- "Buffer commands..." menu (
<spc> m c):<spc> m c pto open preview to the side<spc> m c Pto open preview in current group<spc> m c eto export to HTML
- "Text..." menu (
<spc> m x):<spc> m x bto toggle bold<spc> m x ~to toggle code block<spc> m x `to toggle inline code<spc> m x ito toggle italic<spc> m x lto toggle list<spc> m x mto toggle math<spc> m x sto toggle strikethrough<spc> m x ]to increase heading level (transient)<spc> m x [to decrease heading level (transient)
- "Table of contents..." menu (
<spc> m t):<spc> m t cto create table of contents<spc> m t uto update table of contents<spc> m t nto add section numbers<spc> m t Nto remove section numbers
- "Buffer commands..." menu (
- Fix the
<spc> j nto split new line - ⌨️️ Fix which-key taking over when typing
<spc>in the quick open dialog without an editor open
- Adopt emacs terminology for key bindings names
- Change
<spc> t lto toggle word wrap instead of<spc> t W - Change
<spc> f tto toggle file explorer view - Change
<spc> e n,<spc> e N, and<spc> e pto search in all project - Change
<spc> j =to format selection in visual mode - Change
<spc> d bto open a breakpoint menu<spc> d b bto toggle breakpoint<spc> d b ito toggle inline breakpoint<spc> d b cto add conditional breakpoint<spc> d b fto add function breakpoint<spc> d b dto delete breakpoint<spc> d b Dto delete all breakpoints<spc> d b eto enable breakpoint<spc> d b Eto enable all breakpoints<spc> d b sto disable breakpoint<spc> d b Sto disable all breakpoints<spc> d b nto jump to next breakpoint<spc> d b pto jump to next breakpoint
- Change
<spc> b Nto open a new buffer menu<spc> b N nto open new buffer<spc> b N hto open new buffer (split left)<spc> b N jto open new buffer (split down)<spc> b N kto open new buffer (split up)<spc> b N lto open new buffer (split right)
- Change
<spc> t wto toggle render whitespace
- ⌨️️ Add
ctrl+lto accept suggestion - Add
<spc> "to open a new external terminal - Add major mode bindings for
markdown - Add
<spc> cto open Comments menu<spc> c lto toggle line comment<spc> c nto go to next error<spc> c Nto go to previous error
- Add
<spc> Dto open Diff/Compare menu
- Remove
<spc> d Bsince toggle inline breakpoint is now in<spc> d b
- Implement the commands for rest of the menu items in
<spc> f y<spc> f y cto copy path of active file with line and column<spc> f y Cto copy relative path of active file with line and column<spc> f y dto copy directory path of the active file<spc> f y Dto copy relative directory path of active file<spc> f y lto copy path of active file with line<spc> f y Lto copy relative path of active file with line<spc> f y nto copy filename of active file<spc> f y Nto copy filename without extension of active file
- Change
<spc> h I(report issue) to better action - Change
<spc> f y yand<spc> f y Yto own implementation to show the copied path on status bar
- Add copy section value for magit ref menu
- Add copy buffer revision for magit ref menu
- Add
<spc> T ito choose icon theme - Add
<spc> b 1to focus first editor in group - Add
<spc> b 0to focus last editor in group - Add
<spc> b tto pin editor - Add
<spc> b Tto unpin editor - Add
<spc> f Dto delete current file - Add
<spc> F nto duplicate workspace in new frame - Add
<spc> F Nto open a new empty frame - Add
<spc> F oto switch frame - Add
<spc> g cto clone git repository - Add
<spc> g ito initialize git repository - Add
<spc> g f dto view differences of current file - Add
<spc> g f lto focus on timeline - Add
<spc> h dto open VSCode documentation - Add
<spc> h Ito report issue - Add
<spc> h Tto open VSCode tutorial - Add
<spc> j vto Focus Breadcrumbs - Add
<spc> p Rto replace in files - Add
<spc> q Rto reload window with all extensions disabled - Add
<spc> w cto toggle centered layout - Add
<spc> w Dto close all other editor groups - Add
<spc> w Fto open a new empty frame - Add
<spc> w oto switch frame - Add
<spc> w [to shrink window - Add
<spc> w ]to enlarge window
- Change
<spc> b Yto deselect after copying - Change
<spc> f eto open settings bindings - Change
<spc> f nto create new file with explorer - Change
<spc> f yto open yank bindings
- Remove
<spc> p 'since it has been replaced by<spc> F o
- Add
<spc> f eto open settings - Add
<spc> b sto open a new scratch buffer - Add
<spc> h kto open global key bindings - Add
<spc> l dto close current workspace - Add
<spc> p lto open recent project (same as<spc> p p) - Add
<spc> q fto close window (same as<spc> q q) - Add
<spc> r bto open recent buffers - Add
<spc> r sto search in project - Add
<spc> ;to toggle comment - Add
<spc> 'to show terminal
- Change
<spc> w mto be able to toggle it
- Remove
<spc> w tsince it has been replaced by<spc> w m
- Add
<spc> s rto search reference - Add
<spc> s Rto search reference in side bar - Add
<spc> s Jto jump symbol in the workspace
- Change
<spc> s jto jump to symbol in file
- Fix
<spc> s sby calling the right command
- Fix README format
- Change
<spc> f fto usebodil.file-browser
- ⌨️ Add
ctrl+h/lto traversebodil.file-browsermenu
- Fix typo and grammar in default binding names
-
Add
<spc> <tab>to switch to last editor -
Add
<spc> p `to switch active project window (application window) -
Add support to run VSpaceCode locally with VSCode Remote
-
Add
<spc> s Sto fuzzy search with selection -
⚙️ Add
vim.useSystemClipboardto the setting configuration command -
⌨️ Add
<spc>to trigger which-key menu when the active editor group is empty -
⌨️ Add
ctrl+j/kas a shortcut to traverse items in:-
Quick open menu/QuickPick
-
Suggestion overlay/intellisense
-
Parameter hint (i.e. the overlay when there's multiple overloads)
If you bind
ctrl+h/j/k/lfor window navigation, you can add the!inQuickOpen && !suggestWidgetVisible && !parameterHintsVisibleto thewhensection of those keybindings. See README the example of the bindings
-
- Change
<spc> s sto search the selection automatically if there's one
-
Add menu for magit ref
yin normal modeThis requires configuration of your
keybindings.json, checkout the installation section of README for more information -
Add configuration commands for setting up both
settings.jsonandkeybindings.json -
Add
<spc> b H/J/K/Lfor directional editor moving -
Add
<spc> qfor Quit menu -
Add
<spc> jfor Jump/Joing/Split menu (#53)This requires
vim.easymotionto betruein yoursettings.json
- Split the core menu logic to another extension (
vscode-which-key) so this extension can be focused on Vim users - Change
<spc> s sto use fuzzy search to emulate Helm Swoop/Ivy Swiper (#56)
- Fix the duplicated
<spc> f lby move locate file to<spc> f L
-
Remove support of non-vscodevim users.
If you are a non-vscodevim, please use
vscode-which-keyinstead. -
Remove continuos config checker on launch
-
Remove Gitlens bindings from the
<spc> gTo restore the previous
<spc> gmenu, merge the following overrides tosettings.jsonsettings.json
"spacecode.bindingOverrides": [ { "keys": "g", "name": "Git...", "type": "bindings", "bindings": [ { "key": "s", "name": "Magit: Status", "type": "command", "command": "magit.status" }, { "key": "f", "name": "Magit: File...", "type": "command", "command": "magit.file-popup" }, { "key": "m", "name": "Magit: Dispatch", "type": "command", "command": "magit.dispatch" }, { "key": "d", "name": "Gitlens: Diff...", "type": "bindings", "bindings": [ { "key": "w", "name": "Diff working file", "type": "command", "command": "gitlens.diffWithWorking" }, { "key": "p", "name": "Diff previous file", "type": "command", "command": "gitlens.diffWithPrevious" }, { "key": "n", "name": "Diff next file", "type": "command", "command": "gitlens.diffWithNext" }, { "key": "W", "name": "Diff working line", "type": "command", "command": "gitlens.diffLineWithWorking" }, { "key": "P", "name": "Diff previous line", "type": "command", "command": "gitlens.diffLineWithPrevious" }, { "key": "N", "name": "Diff next line", "type": "command", "command": "gitlens.diffLineWithNext" } ] }, { "key": "h", "name": "Gitlens: File history", "type": "command", "command": "gitlens.showQuickFileHistory" }, { "key": "l", "name": "Gitlens: Repo history", "type": "command", "command": "gitlens.showQuickRepoHistory" }, { "key": "b", "name": "Gitlens: Blame", "type": "command", "command": "gitlens.toggleFileBlame" }, { "key": "z", "name": "Gitlens: Stash", "type": "command", "command": "gitlens.showQuickStashList" }, { "key": "S", "name": "Stag lines", "type": "command", "command": "git.stageSelectedRanges" }, { "key": "U", "name": "Unstage lines", "type": "command", "command": "git.unstageSelectedRanges" }, { "key": "R", "name": "Revert lines", "type": "command", "command": "git.revertSelectedRanges" } ] } ]
- Implement transient menu
- Add
<spc> zfor zoom menu - Add
<spc> 1...8to focus different editor groups - Add
<spc> bfor buffers/editors menu - Add
<spc> efor errors menu - Add
<spc> vfor smart selection - Add
<spc> *to search with input - Add
<spc> !to show terminal - Add
<spc> ifor insert menu - Add
<spc> sfor search/symbol menu - Add
<spc> pfor project menu - Implement
argskey in the bindings to executes command(s) with args For example, the follow the binding will mapyin the menu toy yin vim to yank a line by passing aargsfor that command.
In this example: Only the second command has args. When args is used with commands, the args is expected to be an array. If the null is not present in the follow example, the first command (formatDocument) will receive the second element of args instead.
{
"key": "=",
"name": "Yank a line",
"type": "commands",
"commands": ["editor.action.formatDocument", "vim.remap"],
"args": [
null,
{ "after": ["y", "y"]}
]
},-
qis no longer a reserved key to exit menu -
Move the quick open in
<spc> f fto<spc> p fto be more aligned with spacemacs -
Move fold to
<spc> z .to be more aligned with spacemacs -
Move Show (
s) menu toSfor the addition of search/symbol menu -
Change the editor menu (
e) to be text (x) menu to be more aligned with spacemacs- Add
uto transform text to lower case - Add
Uto transform text to upper case - Add
Jto move lines down with a transient menu - Add
Kto move lines up with a transient menu - Add lines (
l) sub-menu- Add
sto sort lines ascendingly - Add
Sto sort lines decendingly - Add
dto duplicate lines down - Add
Dto duplicate lines up
- Add
- Add delete (
d) sub-menu- Add
wto trim trailing whitespace
- Add
- Add
-
Change the bindings and names in the fold menu to be more aligned with spacemacs
- Use
cinstead offto close at a point - Use
ginstead ofrto close all regions - Use
minstead ofato close all - Use
oinstead ofFto open at a point - Use
Oinstead ofcto open recursively - Use
Ginstead ofRto open all regions - Use
rinstead ofAto open all
- Use
-
Break up toggles into toggles (
t) and UI toggles (T) to be more aligned with spacemacs- Add
Fto toggle ful screen in UI toggles (T) - Add
sto select theme in UI toggles (T) - Change
tto toggle activity bar visibility in UI toggles (T) - Use
Tinsteadtto toggle tab visibility in UI toggles (T) - Remove fold
tin toggles menu (t) in favor of the added toggle in the fold menu
- Add
-
Change the debug bindings to be more aligned with spcaemacs
- Use
sinstead ofofor step over - use
oinstead ofOfor step out - Add
vfor REPL - Add
wto focus on watch window - Add
Wto add to watch
- Use
-
Change the file bindings to be more aligned with spacemacs
- Use
linsteadrto reval file in os - Use
rto open recent - Add
tto toggle explore view - Add
Tto show active file in explore - Add
yto copy the path of the active file
- Use
-
Change the window bindings to be more aligned with spacemacs
- Use
/instead of\for splitting editor editor right - Use
dinstead ofxfor closing editors in group - Change
hto focus on the left pane - Change
jto focus on the pane below - Change
kto focus on the pane above - Change
lto focus on the right pane - Add
sto split editor below - Add
vto split editor right - Add
Wto focus previous editor group
To get the old window pane behavior for
h,j,kandlone can merge the following overrides to yoursettings.jsonsettings.json
"spacecode.bindingOverrides": [ { "keys": "w.h", "name": "Move editor left", "type": "command", "command": "workbench.action.moveEditorToLeftGroup" }, { "keys": "w.j", "name": "Move editor down", "type": "command", "command": "workbench.action.moveEditorToBelowGroup" }, { "keys": "w.k", "name": "Move editor up", "type": "command", "command": "workbench.action.moveEditorToAboveGroup" }, { "keys": "w.l", "name": "Move editor right", "type": "command", "command": "workbench.action.moveEditorToRightGroup" } ]
- Use
- Re-release v0.3.2 in
VSpaceCode
{ "key": "y", "name": "Yank a line", "type": "command", "command": "vim.remap", "args": { "after": ["y", "y"] } },