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
- Add C major mode key bindings
- Add R Package bindings in R Mode
- Fixed render in Quarto mode
- Add window layout bindings
SPC w 1
to open single column window layoutSPC w 2
to open double column window layoutSPC w 3
to open triple column window layoutSPC w 4
to 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
g
in magit buffer which supportsg g
to move cursor to the top. - Added
SPC $
to quickly run recent commands on terminal.
SPC w
+h
,j
,k
,l
navigate to the expected directionSPC w m
maximizes the window as expected, whileSPC w M
changes to maximize the window without hiding other windows
- Add
SPC T M
to 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.configure
command 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/l
as a shortcut to traverse items in code action - Add
SPC b R
to 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 m
andSPC m r v
commands 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 s
for ruby and fsharp - Unify the name to "Go to symbol in project" of
SPC g S
for ruby
- Fix testing commands
<SPC> m t ...
for python major mode
- Add Tasks-related SPC bindings (start with
SPC :
)SPC : .
to rerun last taskSPC : b
to run build taskSPC : c
to configure task runnerSPC : g
to show running taskSPC : x
to terminate taskSPC : l
to show task logSPC : t
to run test taskSPC : :
to run taskSPC : R
to restart running task
- Add error-related bindings
<SPC> e e
to show an error<SPC> e f
to fix an error
- Add additional bindings in Rust major mode
- "+Action" menu (
<SPC> m a
):<SPC> m a a
to execute code action<SPC> m a f
to execute fix action<SPC> m a s
to execute source action<SPC> m a r
to show "+Refactor" menu<SPC> m a r .
to execute refactor action<SPC> m a r r
to rename symbol
- "+Go to" menu (
<SPC> m g
):<SPC> m g d
to go to definition<SPC> m g h
to show call hierarchy<SPC> m g i
to go to implementations<SPC> m g r
to go to references<SPC> m g s
to go to symbol in buffer<SPC> m g t
to go to type definition<SPC> m g S
to go to symbol in project<SPC> m g I
to find implementations<SPC> m g R
to find references
- "+Peek" menu (
SPC m G
):<SPC> m G d
to peek definition<SPC> m G h
to show call hierarchy<SPC> m G i
to peek implementation<SPC> m G r
to peek references
- "+Action" menu (
- Add open-link in Text related commands (
SPC x o
) - Add support for web extension
- Add
<spc> d C
to continue debug to cursor
- Unify existing "+Go to" menu in major modes to our convention
- Fix "Go to test/implementation file"
<SPC> m g t
for dart major mode
- Add major mode for Dart/Flutter
- Update some bindings in the go to menu for Go lang
- Add
g c
to peak call hierarchy - Add
g C
to show call hierarchy in the side bar - Change
g i
to go to implementations from go to symbol which exists in<spc> j i
- Change
g I
to find all implementations from show all symbols which exists in<spc> j I
- Remove
g m
as the command is not valid - Move
t t
toggle test tot T
- Move
t f
test function at cursor tot t
- Move
t F
test file tot f
- Add
- Add additional refactoring bindings in Python major mode
r v
to extract variabler m
to extract method
- Use the newer whichkey menu registering API, which means this version require v0.9 and above of whichkey to work.
- Add
b
backend 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> 0
command 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 d
to go to definition<spc> m g e
to go to errors/problems<spc> m g g
to go to definition<spc> m g i
to find symbol in file<spc> m g r
to peek references<spc> m g D
to peek definition<spc> m g I
to find symbols in project<spc> m g R
to 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/l
for directional editor moving - Add
<spc> c c
to compile the project - Add
<spc> S n
to show notification center - Add
<spc> j c
for previous change,<spc> j C
for 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 D
to open VSpaceCode documentation website - Add
<spc> p c
to run the default build task for the current project - Add
<spc> p T
to run the default test task for the current project - Add
<spc> 0
to show active file in explorer
- Indicate submenus with
+
instead of...
- Add
<spc> z f j/k
to zoom out/in frame - Add
<spc> z x j/k
to zoom out/in text
- Focus on the search result after
<spc> *
<spc> b b
shows 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 = d
to format document with... (choose formatter)<spc> m = m
to format modified lines only<spc> m = s
to format selection<spc> m = S
to format selection with... (choose formatter)
- "Actions..." menu (
<spc> m a
):<spc> m a P
to run code in Go Playground- "Package actions..." menu (
<spc> m a p
):<spc> m a p b
to build current package<spc> m a p g
to get a package<spc> m a p i
to install current package<spc> m a p l
to lint current package<spc> m a p s
to browse packages<spc> m a p v
to vet current package
- "Workspace actions...." menu (
<spc> m a w
):<spc> m a w b
to build workspace<spc> m a w l
to lint workspace<spc> m a w b
to vet workspace<spc> m a w p
to add package to workspace
- "Backend/environment..." menu (
<spc> m b
):<spc> m b e
to choose Go environment<spc> m b g
to show current GOPATH<spc> m b i
to install/update tools<spc> m b l
to locate configured Go tools<spc> m b R
to restart language server
- "Go to..." menu (
<spc> m g
):<spc> m g d
to go to definition<spc> m g D
to peek definition<spc> m g e
to go to errors/problems<spc> m g g
to go to definition<spc> m g i
to find symbol in file<spc> m g I
to find symbol in project<spc> m g m
to go to method in file<spc> m g r
to peek references<spc> m g R
to find all references<spc> m g t
to go to type definition<spc> m g T
to peek type definition
- "Insert/remove..." menu (
<spc> m i
):<spc> m i f
to fill struct<spc> m i i
to add import<spc> m i I
to generate interface stubs<spc> m i t
to add tags to struct fields<spc> m i T
to remove tags from struct fields
- "Refactor..." menu (
<spc> m r
):<spc> m r .
to quick fix<spc> m r e
to extract to function or variable<spc> m r r
to rename symbol
- "Test..." menu (
<spc> m t
):- "Benchmarks..." menu (
<spc> m t b
):<spc> m t b f
to benchmark function at cursor<spc> m t b f
to benchmark file<spc> m t b f
to benchmark package
<spc> m t c
to cancel running tests<spc> m t d
to debug test at cursor<spc> m t f
to test function at cursor<spc> m t F
to test the current file- "Generate..." menu (
<spc> m t g
):<spc> m t g f
to generate unit tests for function<spc> m t g F
to generate unit tests for file<spc> m t g p
to generate unit tests for package
<spc> m t l
to test previous<spc> m t p
to test package<spc> m t P
to apply cover profile<spc> m t s
to subtest at cursor- "Toggle..." menu (
<spc> m t t
):<spc> m t t c
to toggle test coverage in current package<spc> m t t f
to toggle open test file
<spc> m t w
to 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 p
to open preview to the side<spc> m c P
to open preview in current group<spc> m c e
to export to HTML
- "Text..." menu (
<spc> m x
):<spc> m x b
to toggle bold<spc> m x ~
to toggle code block<spc> m x `
to toggle inline code<spc> m x i
to toggle italic<spc> m x l
to toggle list<spc> m x m
to toggle math<spc> m x s
to 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 c
to create table of contents<spc> m t u
to update table of contents<spc> m t n
to add section numbers<spc> m t N
to remove section numbers
- "Buffer commands..." menu (
- Fix the
<spc> j n
to 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 l
to toggle word wrap instead of<spc> t W
- Change
<spc> f t
to toggle file explorer view - Change
<spc> e n
,<spc> e N
, and<spc> e p
to search in all project - Change
<spc> j =
to format selection in visual mode - Change
<spc> d b
to open a breakpoint menu<spc> d b b
to toggle breakpoint<spc> d b i
to toggle inline breakpoint<spc> d b c
to add conditional breakpoint<spc> d b f
to add function breakpoint<spc> d b d
to delete breakpoint<spc> d b D
to delete all breakpoints<spc> d b e
to enable breakpoint<spc> d b E
to enable all breakpoints<spc> d b s
to disable breakpoint<spc> d b S
to disable all breakpoints<spc> d b n
to jump to next breakpoint<spc> d b p
to jump to next breakpoint
- Change
<spc> b N
to open a new buffer menu<spc> b N n
to open new buffer<spc> b N h
to open new buffer (split left)<spc> b N j
to open new buffer (split down)<spc> b N k
to open new buffer (split up)<spc> b N l
to open new buffer (split right)
- Change
<spc> t w
to toggle render whitespace
- ⌨️️ Add
ctrl+l
to accept suggestion - Add
<spc> "
to open a new external terminal - Add major mode bindings for
markdown
- Add
<spc> c
to open Comments menu<spc> c l
to toggle line comment<spc> c n
to go to next error<spc> c N
to go to previous error
- Add
<spc> D
to open Diff/Compare menu
- Remove
<spc> d B
since 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 c
to copy path of active file with line and column<spc> f y C
to copy relative path of active file with line and column<spc> f y d
to copy directory path of the active file<spc> f y D
to copy relative directory path of active file<spc> f y l
to copy path of active file with line<spc> f y L
to copy relative path of active file with line<spc> f y n
to copy filename of active file<spc> f y N
to copy filename without extension of active file
- Change
<spc> h I
(report issue) to better action - Change
<spc> f y y
and<spc> f y Y
to 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 i
to choose icon theme - Add
<spc> b 1
to focus first editor in group - Add
<spc> b 0
to focus last editor in group - Add
<spc> b t
to pin editor - Add
<spc> b T
to unpin editor - Add
<spc> f D
to delete current file - Add
<spc> F n
to duplicate workspace in new frame - Add
<spc> F N
to open a new empty frame - Add
<spc> F o
to switch frame - Add
<spc> g c
to clone git repository - Add
<spc> g i
to initialize git repository - Add
<spc> g f d
to view differences of current file - Add
<spc> g f l
to focus on timeline - Add
<spc> h d
to open VSCode documentation - Add
<spc> h I
to report issue - Add
<spc> h T
to open VSCode tutorial - Add
<spc> j v
to Focus Breadcrumbs - Add
<spc> p R
to replace in files - Add
<spc> q R
to reload window with all extensions disabled - Add
<spc> w c
to toggle centered layout - Add
<spc> w D
to close all other editor groups - Add
<spc> w F
to open a new empty frame - Add
<spc> w o
to switch frame - Add
<spc> w [
to shrink window - Add
<spc> w ]
to enlarge window
- Change
<spc> b Y
to deselect after copying - Change
<spc> f e
to open settings bindings - Change
<spc> f n
to create new file with explorer - Change
<spc> f y
to open yank bindings
- Remove
<spc> p '
since it has been replaced by<spc> F o
- Add
<spc> f e
to open settings - Add
<spc> b s
to open a new scratch buffer - Add
<spc> h k
to open global key bindings - Add
<spc> l d
to close current workspace - Add
<spc> p l
to open recent project (same as<spc> p p
) - Add
<spc> q f
to close window (same as<spc> q q
) - Add
<spc> r b
to open recent buffers - Add
<spc> r s
to search in project - Add
<spc> ;
to toggle comment - Add
<spc> '
to show terminal
- Change
<spc> w m
to be able to toggle it
- Remove
<spc> w t
since it has been replaced by<spc> w m
- Add
<spc> s r
to search reference - Add
<spc> s R
to search reference in side bar - Add
<spc> s J
to jump symbol in the workspace
- Change
<spc> s j
to jump to symbol in file
- Fix
<spc> s s
by calling the right command
- Fix README format
- Change
<spc> f f
to usebodil.file-browser
- ⌨️ Add
ctrl+h/l
to traversebodil.file-browser
menu
- 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 S
to fuzzy search with selection -
⚙️ Add
vim.useSystemClipboard
to the setting configuration command -
⌨️ Add
<spc>
to trigger which-key menu when the active editor group is empty -
⌨️ Add
ctrl+j/k
as 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/l
for window navigation, you can add the!inQuickOpen && !suggestWidgetVisible && !parameterHintsVisible
to thewhen
section of those keybindings. See README the example of the bindings
-
- Change
<spc> s s
to search the selection automatically if there's one
-
Add menu for magit ref
y
in 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.json
andkeybindings.json
-
Add
<spc> b H/J/K/L
for directional editor moving -
Add
<spc> q
for Quit menu -
Add
<spc> j
for Jump/Joing/Split menu (#53)This requires
vim.easymotion
to betrue
in 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 s
to use fuzzy search to emulate Helm Swoop/Ivy Swiper (#56)
- Fix the duplicated
<spc> f l
by move locate file to<spc> f L
-
Remove support of non-vscodevim users.
If you are a non-vscodevim, please use
vscode-which-key
instead. -
Remove continuos config checker on launch
-
Remove Gitlens bindings from the
<spc> g
To restore the previous
<spc> g
menu, merge the following overrides tosettings.json
settings.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> z
for zoom menu - Add
<spc> 1...8
to focus different editor groups - Add
<spc> b
for buffers/editors menu - Add
<spc> e
for errors menu - Add
<spc> v
for smart selection - Add
<spc> *
to search with input - Add
<spc> !
to show terminal - Add
<spc> i
for insert menu - Add
<spc> s
for search/symbol menu - Add
<spc> p
for project menu - Implement
args
key in the bindings to executes command(s) with args For example, the follow the binding will mapy
in the menu toy y
in vim to yank a line by passing aargs
for that command.
{
"key": "y",
"name": "Yank a line",
"type": "command",
"command": "vim.remap",
"args": {
"after": ["y", "y"]
}
},
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"]}
]
},
-
q
is no longer a reserved key to exit menu -
Move the quick open in
<spc> f f
to<spc> p f
to be more aligned with spacemacs -
Move fold to
<spc> z .
to be more aligned with spacemacs -
Move Show (
s
) menu toS
for the addition of search/symbol menu -
Change the editor menu (
e
) to be text (x
) menu to be more aligned with spacemacs- Add
u
to transform text to lower case - Add
U
to transform text to upper case - Add
J
to move lines down with a transient menu - Add
K
to move lines up with a transient menu - Add lines (
l
) sub-menu- Add
s
to sort lines ascendingly - Add
S
to sort lines decendingly - Add
d
to duplicate lines down - Add
D
to duplicate lines up
- Add
- Add delete (
d
) sub-menu- Add
w
to trim trailing whitespace
- Add
- Add
-
Change the bindings and names in the fold menu to be more aligned with spacemacs
- Use
c
instead off
to close at a point - Use
g
instead ofr
to close all regions - Use
m
instead ofa
to close all - Use
o
instead ofF
to open at a point - Use
O
instead ofc
to open recursively - Use
G
instead ofR
to open all regions - Use
r
instead ofA
to open all
- Use
-
Break up toggles into toggles (
t
) and UI toggles (T
) to be more aligned with spacemacs- Add
F
to toggle ful screen in UI toggles (T
) - Add
s
to select theme in UI toggles (T
) - Change
t
to toggle activity bar visibility in UI toggles (T
) - Use
T
insteadt
to toggle tab visibility in UI toggles (T
) - Remove fold
t
in 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
s
instead ofo
for step over - use
o
instead ofO
for step out - Add
v
for REPL - Add
w
to focus on watch window - Add
W
to add to watch
- Use
-
Change the file bindings to be more aligned with spacemacs
- Use
l
insteadr
to reval file in os - Use
r
to open recent - Add
t
to toggle explore view - Add
T
to show active file in explore - Add
y
to 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
d
instead ofx
for closing editors in group - Change
h
to focus on the left pane - Change
j
to focus on the pane below - Change
k
to focus on the pane above - Change
l
to focus on the right pane - Add
s
to split editor below - Add
v
to split editor right - Add
W
to focus previous editor group
To get the old window pane behavior for
h
,j
,k
andl
one can merge the following overrides to yoursettings.json
settings.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