This plugin provides emacs keybindings and workflow for Visual Studio Code and is a fork of an extension by Sebastian Zaha which is a fork of the great vscode extension by hiro-sun.
This fork adds some miscellaneous quality-of-life improvements, such as exiting mark-mode when erasing text, or adding a keybinding for redo, among other things.
The original fork merges some of the pull requests in the original and other external helpers that make the extension a little less an exact copy of emacs behavior, and a little more friendly in interacting with the system clipboard and normal vscode interactions.
The following are some of the original fork's changes and enhancements from the original project:
- The clipboard handling is simplified by the removal of the emacs-only kill ring (which was also an unfinished implementation in the original). Copy, Cut, Yank and C-K work with the system clipboard now.
 - C+x k to close tab, C+x C-k all tabs
 - C+l centers screen on the cursor line
 - C+x C+f bound to quick open file
 - yank overwrites selection
 
| Command | Desc | 
|---|---|
C-f | 
Move forward | 
C-b | 
Move backward | 
C-n | 
Move to the next line | 
C-p | 
Move to the previous line | 
C-a | 
Move to the beginning of line | 
C-e | 
Move to the end of line | 
M-f | 
Move forward by one word unit | 
M-b | 
Move backward by one word unit | 
M-> | 
Move to the end of buffer | 
M-< | 
Move to the beginning of buffer | 
C-v | 
Scroll down by one screen unit | 
M-v | 
Scroll up by one screen unit | 
M-g g (M-g M-g) | 
Jump to line (command palette) | 
M-g n | 
Jump to next error | 
M-g p | 
Jump to previous error | 
C-l | 
Center screen on current line | 
| Command | Desc | 
|---|---|
C-s | 
Search forward | 
C-r | 
Search backward | 
A-% | 
Replace | 
C-Enter | 
Replace One Match (In replace dialog) | 
C-M-n | 
Add selection to next find match | 
| Command | Desc | 
|---|---|
C-d | 
Delete right (DEL) | 
C-h | 
Delete left (BACKSPACE) | 
M-d | 
Delete word | 
M-Bksp | 
Delete word left | 
C-k | 
Kill to line end | 
C-S-Bksp | 
Kill entire line | 
C-w | 
Kill region | 
M-w | 
Copy region to kill ring | 
C-y | 
Yank | 
C-j | 
Enter | 
C-m | 
Enter | 
C-x C-o | 
Delete blank lines around | 
C-x h | 
Select All | 
C-x u (C-/) | 
Undo | 
M-/ | 
Redo | 
C-; | 
Toggle line comment in and out | 
M-; | 
Toggle region comment in and out | 
C-x C-l | 
Convert to lower case | 
C-x C-u | 
Convert to upper case | 
| Command | Desc | 
|---|---|
C-g | 
Cancel | 
C-space | 
Set mark | 
C-quote | 
IntelliSense Suggestion | 
M-x | 
Open command palette | 
C-M-SPC | 
Toggle SideBar visibility | 
C-x z | 
| Command | Desc | 
|---|---|
C-x C-s | 
Save | 
C-x C-w | 
Save as | 
C-x C-n | 
Open new window | 
| Command | Desc | 
|---|---|
C-x b | 
Switch to another open buffer | 
C-x C-f | 
QuickOpen a file | 
C-x k | 
Close current tab (buffer) | 
C-x C-k | 
Close all tabs | 
C-x 0 | 
Close editors in the current group. | 
C-x 1 | 
Close editors in other (split) group. | 
C-x 2 | 
Split editor | 
C-x 3 | 
Toggle split layout (vertical to horizontal) | 
C-x o | 
Focus other split editor | 
ctrl+d: editor.action.addSelectionToNextFindMatch => Usectrl+alt+ninstead;ctrl+g: workbench.action.gotoLine => Usealt+g ginstead;ctrl+b: workbench.action.toggleSidebarVisibility => Usectrl+alt+spaceinstead;ctrl+space: toggleSuggestionDetails, editor.action.triggerSuggest => Usectrl+'instead;ctrl+x: editor.action.clipboardCutAction => Usectrl+winstead;ctrl+v: editor.action.clipboardPasteAction => Usectrl+yinstead;ctrl+k: editor.debug.action.showDebugHover, editor.action.trimTrailingWhitespace, editor.action.showHover, editor.action.removeCommentLine, editor.action.addCommentLine, editor.action.openDeclarationToTheSide;ctrl+k z: workbench.action.toggleZenMode => Usectrl+x zinstead;ctrl+y: redo => Usealt+/instead;ctrl+m: editor.action.toggleTabFocusMode;ctrl+/: editor.action.commentLine => Usectrl+;instead;ctrl+p&ctrl+e: workbench.action.quickOpen => Usectrl+x binstead;ctrl+p: workbench.action.quickOpenNavigateNext => Usectrl+ninstead.