Advanced Templating 2, IntelliJ Emacs Keymaps - go-easygen/easygen GitHub Wiki
-
"
easygen
(and its template) is toYAML
orJSON
whatXSLT
(and its eXtensible Stylesheet Language Transformations rule) is toXML
, but only more flexible and advanced". - IntelliJ Keymaps files are in the form of
XML
; i.e., I had to make a choice of weather to useXSLT
to process it, or use my favoriteeasygen
. - The decision is not that hard to made, as I believe what
easygen
can/have achieved is nearly impossible forXSLT
to match up, although I'd be happy to see anyone to correct me on it. - The following is the journal of me using
easygen
to PKXSLT
. - The reason and end goal of this process is blogged in "Settling the Key bindings war".
The IntelliJ-Emacs Keymaps has two mappings:
whereas the later is the complementary to the former.
Since they are in the .jar
and .xml
form, their corresponding .json
format is collect at the end of this wiki.
Convert the above two Keymaps to plain text.
- Download from above sites and extract the
.xml
file from the.jar
archive. - Converters to JSON using some online XML to JSON Converter like this one
- Optionally sort the JSON alphabetically by some online tools like this one
- Save them as
/tmp/IntelliJ-Emacs.json
and/tmp/Emacs+Patched.json
.
Clean up so that they can be consumed by easygen
.
sed -ir 's/@(.)/\U\1\E/g; s/"action"/"Action"/; s/keyboard-shortcut/Shortcut/; s/-keystroke/KS/;' /tmp/IntelliJ-Emacs.json
sed -ir 's/@(.)/\U\1\E/g; s/"action"/"Action"/; s/keyboard-shortcut/Shortcut/; s/-keystroke/KS/;' /tmp/Emacs+Patched.json
- Convert the json to plain text using
easygen
. - Translate from the IntelliJ Emacs Keymap naming convention to Emacs'.
- Remove
C-g
from the list.
All above are done in:
easygen test/IntelliJ-Emacs.tmpl /tmp/IntelliJ-Emacs.json | sed -r 's/ [A-Z]\b/\L&\E/g; s/(LEFT|RIGHT|UP|DOWN|END|PAGE|INSERT|DELETE|ESCAPE|SPACE)/\L&\E/g; s/^(page)_/\1/; s/control /C-/g; s/(meta|alt) /M-/gi; s/shift /S-/gi; s/^S-C-M-/C-M-S-/; s/^S-C-/C-S-/; s/^S-M-/M-S-/; s/ENTER/RET/; s/PERIOD/./; s/SEMICOLON/;/; s|SLASH|/|; s/BACK_space/backspace/; /^C-g\t/d;' | tee /tmp/IntelliJ-Emacs.lst
easygen test/IntelliJ-Emacs.tmpl /tmp/Emacs+Patched.json | sed -r 's/ [A-Z]\b/\L&\E/g; s/(LEFT|RIGHT|UP|DOWN|END|PAGE|INSERT|DELETE|ESCAPE|SPACE)/\L&\E/g; s/^(page)_/\1/; s/control /C-/g; s/(meta|alt) /M-/gi; s/shift /S-/gi; s/^S-C-M-/C-M-S-/; s/^S-C-/C-S-/; s/^S-M-/M-S-/; s/ENTER/RET/; s/PERIOD/./; s/SEMICOLON/;/; s|SLASH|/|; s/BACK_space/backspace/; /^C-g\t/d;' | tee -a /tmp/IntelliJ-Emacs.lst
Note the second time it is tee -a
, append.
The content of test/IntelliJ-Emacs.tmpl
is:
{{range .Action -}}
{{if eq "map[string]interface {}" (printf "%T" .Shortcut) }}{{.Shortcut.FirstKS}}{{if .Shortcut.SecondKS}} {{.Shortcut.SecondKS}}{{end}} {{.Id}}
{{else}}{{ $Id := .Id -}}
{{range .Shortcut}}{{.FirstKS}}{{if .SecondKS}} {{.SecondKS}}{{end}} {{$Id}}
{{end}}{{end}}{{end}}
- Take a look at the Awesome Emacs Keymap template notes first if you haven't yet.
- Unlike Awesome Emacs Keymap definition, which separates the cases of single key map and multiple key maps with different keys,
IntelliJ
uses the same key for both cases. In above template, checking for single key map is done by{{if eq "map[string]interface {}" (printf "%T" .Shortcut) }}
. - It was so difficult to get it right in one shot, that I wrote a test program to test the templating out before putting it into the
easygen
template file. This test program is the full blown program that starts from readingjson
, which can surely help if you need to troubleshoot yourjson
reading & interpreting issues.
To collect them into a single place and put them side by side, in Markdown table form:
LANG=C sort < /tmp/mcx.lst > /tmp/mcx.txt
LANG=C sort < /tmp/IntelliJ-Emacs.lst > /tmp/IntelliJ-Emacs.txt
join -j 1 -t "$t" -a 1 -a 2 -e'-' -o '0,1.2,2.2' /tmp/mcx.txt /tmp/IntelliJ-Emacs.txt | sed 's/\t/|/g; s/^/|/; s/$/|/;'
Final Result of the IntelliJ-Emacs Keymap keybindings in plain text
C-/ $Undo
C-CLOSE_BRACKET EditorCodeBlockEnd
C-F10 ToggleBookmark
C-F4 CloseContent
C-HOME EditorTextStart
C-M-/ SmartTypeCompletion
C-M-; Emacs+.CommentDwim
C-M-CLOSE_BRACKET EditorCodeBlockEnd
C-M-F7 ShowUsages
C-M-OPEN_BRACKET EditorCodeBlockStart
C-M-S-5 Emacs+.QueryReplaceRegexp
C-M-S-down VcsShowNextChangeMarker
C-M-S-up VcsShowPrevChangeMarker
C-M-a MethodUp
C-M-b EditorPreviousWord
C-M-backspace Emacs+.KillWordBackward
C-M-d EditorCodeBlockEnd
C-M-delete Emacs+.KillWordBackward
C-M-e MethodDown
C-M-f EditorNextWord
C-M-g GotoDeclaration
C-M-i AutoIndentLines
C-M-j Emacs+.CommentIndentNew
C-M-k EditorKillToWordEnd
C-M-k Emacs+.KillWord
C-M-q AutoIndentLines
C-M-r Emacs+.ISearchBackwardRegexp
C-M-s Emacs+.ISearchForwardRegexp
C-M-s Find
C-M-u EditorCodeBlockStart
C-M-w EditorSelectWord
C-M-w Emacs+.AppendNextKill
C-M-w Emacs+.ISDeleteChar
C-M-y Emacs+.ISYankChar
C-OPEN_BRACKET EditorCodeBlockStart
C-S-2 EditorToggleStickySelection
C-S-M-d EditorCodeBlockEndWithSelection
C-S-M-u EditorCodeBlockStartWithSelection
C-S-MINUS $Undo
C-S-backspace Emacs+.KillWholeLine
C-S-down EditorForwardParagraphWithSelection
C-S-space SmartTypeCompletion
C-S-up EditorBackwardParagraphWithSelection
C-S-x BACK_QUOTE GotoPreviousError
C-S-z $Redo
C-a EditorLineStart
C-b EditorLeft
C-backspace EditorDeleteToWordStart
C-backspace Emacs+.KillWordBackward
C-c C-c CommentByLineComment
C-c C-e Diff.KeymapGroup
C-c C-n StepOver
C-c C-p EvaluateExpression
C-c C-r Resume
C-c C-s StepInto
C-c C-t ToggleTemporaryLineBreakpoint
C-c C-u RunToCursor
C-d $Delete
C-d Emacs+.ISForwardDelete
C-delete Emacs+.KillWord
C-down EditorForwardParagraph
C-e EditorLineEnd
C-end EditorTextEnd
C-f EditorRight
C-insert $Copy
C-k EditorCutLineEnd
C-k Emacs+.KillLine
C-l EditorScrollToCenter
C-l Emacs+.Recenter
C-left EditorPreviousWord
C-left Emacs+.BackwardWord
C-m Console.Execute
C-m EditorChooseLookupItem
C-m EditorEnter
C-m EditorStartNewLine
C-m NextTemplateVariable
C-n EditorDown
C-n Emacs+.TWSelectNext
C-o EditorSplitLine
C-p EditorUp
C-p Emacs+.TWSelectPrevious
C-r Emacs+.ISearchBackward
C-r FindPrevious
C-right EditorNextWord
C-right Emacs+.ForwardWord
C-s Emacs+.ISearchForward
C-s Find
C-space EditorToggleStickySelection
C-t Emacs+.TransposeChars
C-u C-M-; Emacs+.CommentKill
C-u M-. GotoImplementation
C-u M-; Emacs+.CommentKill
C-u M-CIRCUMFLEX EditorJoinLines
C-u M-S-6 EditorJoinLines
C-up EditorBackwardParagraph
C-v EditorPageDown
C-v Emacs+.TWScrollUp
C-w EditorKillRegion
C-w Emacs+.ISYankNextWord
C-w Emacs+.KillRegion
C-x 0 CloseContent
C-x 0 HideActiveWindow
C-x 1 Emacs+.DeleteOtherWindows
C-x 1 MaximizeToolWindow
C-x 1 UnsplitAll
C-x 2 SplitHorizontally
C-x 3 SplitVertically
C-x BACK_QUOTE GotoNextError
C-x BACK_QUOTE GotoNextError
C-x C-c CloseAllEditors
C-x C-f GotoFile
C-x C-o Emacs+.DeleteBlankLines
C-x C-o NextProjectWindow
C-x C-p FileChooser.TogglePathShowing
C-x C-s SaveAll
C-x C-t Emacs+.TransposeLines
C-x C-v ReloadFromDisk
C-x C-x Emacs+.ExchangePointAndMark
C-x EQUALS Emacs+.WhatCursorPos
C-x b Emacs+.SwitchToBuffer
C-x b Switcher
C-x h $SelectAll
C-x k CloseContent
C-x n Diff.NextChange
C-x n NextTab
C-x o Emacs+.TWInterrupt
C-x o NextSplitter
C-x p Diff.PrevChange
C-x p PreviousTab
C-x space ToggleLineBreakpoint
C-x v Vcs.QuickListPopupAction
C-x x EditorSwapSelectionBoundaries
C-y $Paste
C-y Emacs+.ISYankLine
C-y Emacs+.Yank
C-z EditorPageUp
F2 GotoNextError
F2 GotoNextError
F3 FindNext
HOME EditorLineStart
M-. GotoDeclaration
M-. GotoDeclaration
M-/ CodeCompletion
M-; CommentByLineComment
M-; Emacs+.CommentDwim
M-AT EditorSelectWord
M-BACK_/ Emacs+.DeleteHorizSpace
M-CIRCUMFLEX Emacs+.DeleteIndentation
M-F3 Find
M-F7 FindUsages
M-F7 FindUsages
M-GREATER EditorTextEnd
M-GREATER Emacs+.TWEnd
M-LESS EditorTextStart
M-LESS Emacs+.TWBegin
M-MINUS C-k EditorCutLineBackward
M-MINUS C-k Emacs+.CutLineBackwardKey
M-S-. EditorTextEnd
M-S-. EditorTextEnd
M-S-. Emacs+.TWEnd
M-S-2 EditorSelectWord
M-S-5 Emacs+.QueryReplace
M-S-5 Replace
M-S-6 Emacs+.DeleteIndentation
M-S-COMMA EditorTextStart
M-S-COMMA EditorTextStart
M-S-COMMA Emacs+.TWBegin
M-S-MINUS $Redo
M-S-g GotoClass
M-S-left PreviousEditorTab
M-S-m CompileProject
M-S-o SelectVirtualTemplateElement
M-S-p ParameterInfo
M-S-right NextEditorTab
M-S-s FindUsages
M-S-s ShowUsages
M-b EditorPreviousWord
M-b Emacs+.BackwardWord
M-backspace EditorDeleteToWordStart
M-c $Copy
M-c Emacs+.CapitalizeWord
M-c Emacs+.ISCase
M-d EditorDuplicate
M-d EditorKillToWordEnd
M-d EditorKillToWordEnd
M-d Emacs+.KillWord
M-delete EditorKillToWordStart
M-delete Emacs+.KillWordBackward
M-down MethodDown
M-f EditorNextWord
M-f Emacs+.ForwardWord
M-g GotoLine
M-g M-g GotoLine
M-g M-n GotoNextError
M-g g GotoLine
M-g n GotoNextError
M-i EmacsStyleIndent
M-j Emacs+.CommentIndentNew
M-l Emacs+.DowncaseWord
M-left Diff.PrevChange
M-left Emacs+.BackwardWord
M-left PreviousTab
M-m EditorLineStart
M-m Emacs+.BackToIndentation
M-m Emacs+.ISMultiLine
M-n Emacs+.CommentNextLine
M-n Emacs+.ISearchHistoryNext
M-p Emacs+.CommentPreviousLine
M-p Emacs+.ISearchHistoryPrevious
M-r Emacs+.ISRegex
M-r FindPrevious
M-right Diff.NextChange
M-right Emacs+.ForwardWord
M-right NextTab
M-s FindInPath
M-s FindNext
M-space Emacs+.JustOneSpace
M-t Emacs+.TransposeWords
M-u Emacs+.UpcaseWord
M-u SynchronizeCurrentFile
M-up MethodUp
M-v EditorPageUp
M-v Emacs+.TWScrollDown
M-w EditorKillRingSave
M-w Emacs+.ISWords
M-w Emacs+.SaveRegion
M-x GotoAction
M-x GotoAction
M-y Emacs+.ISYankLast
M-y Emacs+.YankPop
M-y PasteMultiple
RET Console.Execute
RET EditorChooseLookupItem
RET EditorEnter
RET Emacs+.ISEnter
RET NextTemplateVariable
S-F2 GotoPreviousError
S-F3 FindPrevious
S-delete $Cut
S-insert $Paste
TAB EmacsStyleIndent
TAB EmacsStyleIndent
TAB NextTemplateVariable
delete $Delete
down EditorDown
end EditorLineEnd
escape . GotoDeclaration
escape . GotoDeclaration
escape ; Emacs+.CommentDwim
escape BACK_/ Emacs+.DeleteHorizSpace
escape C-b EditorPreviousWord
escape C-backspace Emacs+.KillWordBackward
escape C-delete Emacs+.KillWordBackward
escape C-f EditorNextWord
escape C-j Emacs+.CommentIndentNew
escape COMMA EditorTextStart
escape b Emacs+.BackwardWord
escape backspace EditorDeleteToWordStart
escape c Emacs+.CapitalizeWord
escape d EditorKillToWordEnd
escape d Emacs+.KillWord
escape delete Emacs+.KillWordBackward
escape escape EditorEscape
escape escape EditorEscape
escape f Emacs+.ForwardWord
escape j Emacs+.CommentIndentNew
escape l Emacs+.DowncaseWord
escape left Emacs+.BackwardWord
escape m Emacs+.BackToIndentation
escape n Emacs+.CommentNextLine
escape p Emacs+.CommentPreviousLine
escape right Emacs+.ForwardWord
escape space Emacs+.JustOneSpace
escape u Emacs+.UpcaseWord
escape u SynchronizeCurrentFile
escape w $Copy
escape w Emacs+.SaveRegion
escape x GotoAction
escape y Emacs+.YankPop
left EditorLeft
pagedown EditorPageDown
pageup EditorPageUp
right EditorRight
up EditorUp
Json data of the Awesome Emacs Keymap keybindings
{
"Keybindings": [
{
"Key": "ctrl+u",
"Command": "universalArgument",
"when": "editorTextFocus"
},
{
"$special": "universalArgumentTypes"
},
{
"Keys": ["right", "ctrl+f"],
"Command": "forwardChar",
"whens": ["editorTextFocus", "terminalFocus"]
},
{
"Keys": ["right", "ctrl+f"],
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "forwardChar"
}
},
{
"Keys": ["left", "ctrl+b"],
"Command": "backwardChar",
"whens": ["editorTextFocus", "terminalFocus"]
},
{
"Keys": ["left", "ctrl+b"],
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "backwardChar"
}
},
{
"Keys": ["up", "ctrl+p"],
"Command": "previousLine",
"whens": ["editorTextFocus && !suggestWidgetVisible", "terminalFocus"]
},
{
"Keys": ["up", "ctrl+p"],
"Command": "selectPrevSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
},
{
"Keys": ["up", "ctrl+p"],
"Command": "showPrevParameterHint",
"when": "parameterHintsMultipleSignatures && parameterHintsVisible && textInputFocus"
},
{
"Keys": ["up", "ctrl+p"],
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "previousLine"
}
},
{
"Keys": ["down", "ctrl+n"],
"Command": "nextLine",
"whens": ["editorTextFocus", "terminalFocus"]
},
{
"Keys": ["down", "ctrl+n"],
"Command": "selectNextSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
},
{
"Keys": ["down", "ctrl+n"],
"Command": "showNextParameterHint",
"when": "parameterHintsMultipleSignatures && parameterHintsVisible && textInputFocus"
},
{
"Keys": ["down", "ctrl+n"],
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "nextLine"
}
},
{
"Keys": ["home", "ctrl+a"],
"Command": "moveBeginningOfLine",
"whens": ["editorTextFocus", "terminalFocus"]
},
{
"Keys": ["home", "ctrl+a"],
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "moveBeginningOfLine"
}
},
{
"Keys": ["end", "ctrl+e"],
"Command": "moveEndOfLine",
"whens": ["editorTextFocus", "terminalFocus"]
},
{
"Keys": ["end", "ctrl+e"],
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "moveEndOfLine"
}
},
{
"Key": "meta+f",
"Command": "forwardWord",
"when": "editorTextFocus"
},
{
"Key": "meta+f",
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "forwardWord"
}
},
{
"Key": "meta+b",
"Command": "backwardWord",
"when": "editorTextFocus"
},
{
"Key": "meta+b",
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing",
"args": {
"then": "backwardWord"
}
},
{
"Key": "meta+m",
"Command": "backToIndentation",
"when": "editorTextFocus"
},
{
"Key": "meta+m",
"Command": "isearchExit",
"when": "!config.cursorMoveOnFindWidget && editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "backToIndentation"
}
},
{
"Keys": ["pagedown", "ctrl+v"],
"Command": "scrollUpCommand",
"when": "editorTextFocus && !suggestWidgetVisible"
},
{
"Keys": ["pagedown", "ctrl+v"],
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "scrollUpCommand"
}
},
{
"Keys": ["pageup", "meta+v"],
"Command": "scrollDownCommand",
"when": "editorTextFocus && !suggestWidgetVisible"
},
{
"Keys": ["pageup", "meta+v"],
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "scrollDownCommand"
}
},
{
"Key": "meta+shift+[",
"Command": "backwardParagraph",
"when": "editorTextFocus && !suggestWidgetVisible"
},
{
"Key": "meta+shift+]",
"Command": "forwardParagraph",
"when": "editorTextFocus && !suggestWidgetVisible"
},
{
"Key": "meta+shift+.",
"Command": "endOfBuffer",
"when": "editorTextFocus"
},
{
"Key": "meta+shift+.",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then":"endOfBuffer"
}
},
{
"Key": "meta+shift+,",
"Command": "beginningOfBuffer",
"when": "editorTextFocus"
},
{
"Key": "meta+shift+,",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "beginningOfBuffer"
}
},
{
"Keys": ["meta+g meta+g", "meta+g g"],
"Command": "workbench.action.gotoLine"
},
{
"Keys": ["meta+g meta+g", "meta+g g"],
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "workbench.action.gotoLine"
}
},
{
"Key": "escape g",
"Command": "workbench.action.gotoLine",
"when": "config.useMetaPrefixEscape"
},
{
"Keys": ["meta+g n", "meta+g meta+n"],
"Command": "editor.action.marker.next"
},
{
"Key": "ctrl+x `",
"Command": "editor.action.marker.next",
"when": "editorTextFocus"
},
{
"Keys": ["meta+g p", "meta+g meta+p"],
"Command": "editor.action.marker.prev"
},
{
"Key": "ctrl+l",
"Command": "recenterTopBottom",
"when": "editorTextFocus"
},
{
"Key": "ctrl+s",
"Command": "isearchForward",
"when": "!findInputFocussed"
},
{
"Key": "ctrl+s",
"Command": "editor.action.nextMatchFindAction",
"when": "findInputFocussed"
},
{
"Key": "ctrl+r",
"Command": "isearchBackward",
"when": "!findInputFocussed"
},
{
"Key": "ctrl+r",
"Command": "editor.action.previousMatchFindAction",
"when": "findInputFocussed"
},
{
"Key": "meta+shift+5",
"Command": "editor.action.startFindReplaceAction",
"when": "editorFocus"
},
{
"Keys": [
"ctrl+f",
"ctrl+b",
"ctrl+p",
"ctrl+n",
"ctrl+a",
"ctrl+e",
"alt+f",
"alt+b",
"alt+m",
"ctrl+d",
"ctrl+h",
"alt+d",
"ctrl+k",
"ctrl+w",
"alt+w",
"ctrl+y",
"alt+y",
"ctrl+m",
"ctrl+j",
"alt+l",
"alt+u",
"alt+backspace"
],
"whens": [
"isWindows && config.cursorMoveOnFindWidget && findInputFocussed && !isComposing",
"isWindows && replaceInputFocussed && !isComposing"
]
},
{
"Key": "ctrl+meta+n",
"Command": "addSelectionToNextFindMatch",
"when": "editorFocus"
},
{
"Key": "ctrl+meta+p",
"Command": "addSelectionToPreviousFindMatch",
"when": "editorFocus"
},
{
"Key": "ctrl+d",
"Command": "deleteForwardChar",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+h",
"Command": "deleteBackwardChar",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+d",
"Command": "killWord",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+backspace",
"Command": "backwardKillWord",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+k",
"Command": "killLine",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+shift+backspace",
"Command": "killWholeLine",
"when": "editorTextFocus"
},
{
"Key": "ctrl+w",
"Command": "killRegion",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+w",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing"
},
{
"Key": "meta+w",
"Command": "copyRegion",
"when": "editorTextFocus"
},
{
"Key": "meta+w",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing"
},
{
"Key": "ctrl+y",
"Command": "yank",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+y",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing"
},
{
"Key": "meta+y",
"Command": "yank-pop",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+y",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing"
},{
"Key": "ctrl+o",
"Command": "lineBreakInsert",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+o",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing"
},
{
"Key": "ctrl+m",
"Command": "newLine",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+m",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing"
},
{
"Key": "ctrl+j",
"Command": "newLine",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+j",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing"
},
{
"Key": "ctrl+x ctrl+o",
"Command": "deleteBlankLines",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+x ctrl+o",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "deleteBlankLines"
}
},
{
"Key": "ctrl+x h",
"Command": "editor.action.selectAll",
"when": "editorTextFocus"
},
{
"Key": "ctrl+x h",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then":"editor.action.selectAll"
}
},
{
"Keys": ["ctrl+x u", "ctrl+/", "ctrl+shift+-"],
"Command": "undo",
"when": "editorTextFocus && !editorReadonly"
},
{
"Keys": ["ctrl+x u", "ctrl+/", "ctrl+shift+-"],
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "undo"
}
},
{
"Key": "ctrl+;",
"Command": "editor.action.commentLine",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+;",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "editor.action.commentLine"
}
},
{
"Key": "meta+;",
"Command": "editor.action.blockComment",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+;",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !isComposing",
"args": {
"then": "editor.action.blockComment"
}
},
{
"Key": "ctrl+x ctrl+l",
"Command": "transformToLowercase",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+l",
"Command": "transformToLowercase",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "ctrl+x ctrl+u",
"Command": "transformToUppercase",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+u",
"Command": "transformToUppercase",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+c",
"Command": "transformToTitlecase",
"when": "editorTextFocus && !editorReadonly"
},
{
"Key": "meta+shift+6",
"Command": "executeCommands",
"when": "editorTextFocus && !editorReadOnly",
"args": [
"previousLine",
"editor.action.joinLines"
]
},
{
"Key": "escape",
"Command": "cancel",
"when": "editorTextFocus && editorHasSelection && !config.useMetaPrefixEscape"
},
{
"Key": "escape",
"Command": "cancel",
"when": "editorTextFocus && editorHasMultipleSelections && !config.useMetaPrefixEscape"
},
{
"Key": "ctrl+g",
"Command": "cancel",
"when": "editorTextFocus"
},
{
"Key": "ctrl+g",
"Command": "isearchAbort",
"when": "editorFocus && findWidgetVisible && !isComposing"
},
{
"Key": "enter",
"Command": "isearchExit",
"when": "editorFocus && findWidgetVisible && !replaceInputFocussed && !isComposing"
},
{
"Key": "ctrl+g",
"Command": "closeReferenceSearchEditor",
"when": "inReferenceSearchEditor && !config.editor.stablePeek"
},
{
"Key": "ctrl+g",
"Command": "closeReferenceSearch",
"when": "referenceSearchVisible && !config.editor.stablePeek"
},
{
"Key": "ctrl+g",
"Command": "closeBreakpointWidget",
"when": "breakpointWidgetVisible && editorFocus"
},
{
"Key": "ctrl+g",
"Command": "leaveSnippet",
"when": "editorTextFocus && inSnippetMode"
},
{
"Key": "ctrl+g",
"Command": "closeMarkersNavigation",
"when": "editorFocus && markersNavigationVisible"
},
{
"Key": "ctrl+g",
"Command": "closeParameterHints",
"when": "editorTextFocus && parameterHintsVisible"
},
{
"Key": "ctrl+g",
"Command": "hideSuggestWidget",
"when": "editorTextFocus && suggestWidgetVisible"
},
{
"Key": "ctrl+g",
"Command": "cancelRenameInput",
"when": "editorFocus && renameInputVisible"
},
{
"Key": "ctrl+g",
"Command": "closeAccessibilityHelp",
"when": "accessibilityHelpWidgetVisible && editorFocus"
},
{
"Key": "ctrl+g",
"Command": "closeReplaceInFilesWidget",
"when": "replaceInputBoxFocus && searchViewletVisible"
},
{
"Key": "ctrl+g",
"Command": "workbench.action.closeMessages",
"when": "globalMessageVisible"
},
{
"Key": "ctrl+g",
"Command": "workbench.action.closeQuickOpen",
"when": "inQuickOpen"
},
{
"Keys": ["ctrl+space", "ctrl+shift+2"],
"Command": "setMarkCommand",
"when": "editorTextFocus"
},
{
"Key": "escape space",
"Command": "setMarkCommand",
"when": "editorTextFocus && config.useMetaPrefixEscape"
},
{
"Key": "ctrl+x ctrl+x",
"Command": "exchangePointAndMark",
"when": "editorTextFocus"
},
{
"Key": "ctrl+x space",
"Command": "rectangleMarkMode",
"when": "editorTextFocus"
},
{
"Key": "ctrl+x r",
"Command": "startRectCommand",
"when": "editorTextFocus"
},
{
"Key": "k",
"Command": "killRectangle",
"when": "acceptingRectCommand && editorTextFocus"
},
{
"Key": "y",
"Command": "yankRectangle",
"when": "acceptingRectCommand && editorTextFocus"
},
{
"Key": "d",
"Command": "deleteRectangle",
"when": "acceptingRectCommand && editorTextFocus"
},
{
"Key": "meta+w",
"Command": "copyRectangleAsKill",
"when": "acceptingRectCommand && editorTextFocus"
},
{
"Key": "o",
"Command": "openRectangle",
"when": "acceptingRectCommand && editorTextFocus"
},
{
"Key": "c",
"Command": "clearRectangle",
"when": "acceptingRectCommand && editorTextFocus"
},
{
"$special": "rectMarkModeTypes"
},
{
"Key": "ctrl+'",
"Command": "editor.action.triggerSuggest",
"when": "editorTextFocus"
},
{
"Key": "ctrl+'",
"Command": "toggleSuggestionDetails",
"when": "editorTextFocus && suggestWidgetVisible"
},
{
"Key": "meta+/",
"Command": "editor.action.triggerSuggest",
"when": "editorTextFocus"
},
{
"Key": "meta+/",
"Command": "toggleSuggestionDetails",
"when": "editorTextFocus && suggestWidgetVisible"
},
{
"Key": "meta+x",
"Command": "workbench.action.showCommands"
},
{
"Key": "ctrl+meta+space",
"Command": "workbench.action.toggleSidebarVisibility"
},
{
"Key": "ctrl+x ctrl+c",
"Command": "workbench.action.closeWindow"
},
{
"Key": "ctrl+x z",
"Command": "workbench.action.toggleZenMode",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x ctrl+f",
"Command": "workbench.action.quickOpen",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x ctrl+s",
"Command": "workbench.action.files.save",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x ctrl+w",
"Command": "workbench.action.files.saveAs",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x s",
"Command": "workbench.action.files.saveAll",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x ctrl+n",
"Command": "workbench.action.newWindow",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x b",
"Command": "workbench.action.showAllEditorsByMostRecentlyUsed",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x k",
"Command": "workbench.action.closeActiveEditor",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x ctrl-k",
"Command": "workbench.action.closeAllEditors",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x 0",
"Command": "workbench.action.closeEditorsInGroup",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x 1",
"Command": "workbench.action.closeEditorsInOtherGroups",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x 2",
"Command": "workbench.action.splitEditorDown",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x 3",
"Command": "workbench.action.splitEditorRight",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x 4",
"Command": "workbench.action.toggleEditorGroupLayout",
"when": "!terminalFocus"
},
{
"Key": "ctrl+x o",
"Command": "workbench.action.navigateEditorGroups",
"when": "!terminalFocus"
},
{
"Key": "ctrl+meta+f",
"Command": "paredit.forwardSexp",
"when": "editorTextFocus"
},
{
"Key": "ctrl+meta+b",
"Command": "paredit.backwardSexp",
"when": "editorTextFocus"
},
{
"Key": "ctrl+meta+k",
"Command": "paredit.killSexp",
"when": "editorTextFocus"
},
{
"Key": "ctrl+p",
"Command": "selectPrevQuickFix",
"when": "editorFocus && quickFixWidgetVisible"
},
{
"Key": "ctrl+n",
"Command": "selectNextQuickFix",
"when": "editorFocus && quickFixWidgetVisible"
},
{
"Key": "ctrl+p",
"Command": "workbench.action.quickOpenSelectPrevious",
"when": "inQuickOpen"
},
{
"Key": "ctrl+n",
"Command": "workbench.action.quickOpenSelectNext",
"when": "inQuickOpen"
},
{
"Key": "ctrl+m",
"Command": "workbench.action.acceptSelectedQuickOpenItem",
"when": "inQuickOpen"
},
{
"Key": "ctrl+shift+'",
"Command": "editor.action.triggerParameterHints",
"when": "editorTextFocus"
},
{
"Key": "ctrl+x j",
"Command": "workbench.action.togglePanel",
"when": "!terminalFocus"
},
{
"Key": "ctrl+i",
"Command": "executeCommands",
"args": [
"forwardChar",
"nextLine"
]
}
]
}
Json data of the IntelliJ-Emacs Keymap keybindings
{
"Name": "Emacs+",
"Parent": "Emacs",
"Version": "1",
"Disable-mnemonics": "true",
"Action": [
{
"Id": "ToggleBookmark",
"Shortcut": {
"FirstKS": "control F10"
}
},
{
"Id": "EditorCodeBlockStart",
"Shortcut": {
"FirstKS": "control alt U"
}
},
{
"Id": "EditorCodeBlockEnd",
"Shortcut": {
"FirstKS": "control alt D"
}
},
{
"Id": "EditorCodeBlockStartWithSelection",
"Shortcut": {
"FirstKS": "control shift alt U"
}
},
{
"Id": "EditorCodeBlockEndWithSelection",
"Shortcut": {
"FirstKS": "control shift alt D"
}
},
{
"Id": "EditorSelectWord",
"Shortcut": [
{
"FirstKS": "alt AT"
},
{
"FirstKS": "alt shift 2"
}
]
},
{
"Id": "Vcs.QuickListPopupAction",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "V"
}
},
{
"Id": "Diff.KeymapGroup",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control E"
}
},
{
"Id": "GotoLine",
"Shortcut": [
{
"FirstKS": "alt G",
"SecondKS": "G"
},
{
"FirstKS": "alt G",
"SecondKS": "alt G"
}
]
},
{
"Id": "GotoNextError",
"Shortcut": [
{
"FirstKS": "alt G",
"SecondKS": "N"
},
{
"FirstKS": "alt G",
"SecondKS": "alt N"
},
{
"FirstKS": "F2"
},
{
"FirstKS": "control X",
"SecondKS": "BACK_QUOTE"
}
]
},
{
"Id": "GotoDeclaration",
"Shortcut": [
{
"FirstKS": "alt PERIOD"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "PERIOD"
}
],
"mouse-shortcut": {
"Keystroke": "control button1"
}
},
{
"Id": "GotoImplementation",
"Shortcut": {
"FirstKS": "control U",
"SecondKS": "alt PERIOD"
}
},
{
"Id": "GotoAction",
"Shortcut": {
"FirstKS": "alt X"
}
},
{
"Id": "FindInPath",
"Shortcut": {
"FirstKS": "alt S"
}
},
{
"Id": "FindUsages",
"Shortcut": {
"FirstKS": "alt F7"
}
},
{
"Id": "ShowUsages",
"Shortcut": [
{
"FirstKS": "control alt F7"
},
{
"FirstKS": "alt shift S"
}
]
},
{
"Id": "EditorTextStart",
"Shortcut": [
{
"FirstKS": "alt shift COMMA"
},
{
"FirstKS": "alt LESS"
}
]
},
{
"Id": "EditorTextEnd",
"Shortcut": [
{
"FirstKS": "alt shift PERIOD"
},
{
"FirstKS": "alt GREATER"
}
]
},
{
"Id": "Emacs+.ForwardWord",
"Shortcut": [
{
"FirstKS": "control RIGHT"
},
{
"FirstKS": "alt RIGHT"
},
{
"FirstKS": "alt F"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "F"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "RIGHT"
}
]
},
{
"Id": "Emacs+.BackwardWord",
"Shortcut": [
{
"FirstKS": "control LEFT"
},
{
"FirstKS": "alt LEFT"
},
{
"FirstKS": "alt B"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "B"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "LEFT"
}
]
},
{
"Id": "EditorNextWord",
"Shortcut": {
"FirstKS": "control alt F"
}
},
{
"Id": "EditorPreviousWord",
"Shortcut": {
"FirstKS": "control alt B"
}
},
{
"Id": "EditorKillToWordEnd",
"Shortcut": [
{
"FirstKS": "ESCAPE",
"SecondKS": "D"
},
{
"FirstKS": "alt D"
},
{
"FirstKS": "control alt K"
}
]
},
{
"Id": "MaximizeToolWindow",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "1"
}
},
{
"Id": "HideActiveWindow",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "0"
}
},
{
"Id": "EditorEscape",
"Shortcut": {
"FirstKS": "ESCAPE",
"SecondKS": "ESCAPE"
}
},
{
"Id": "Emacs+.KeyboardQuit",
"Shortcut": {
"FirstKS": "control G"
}
},
{
"Id": "EditorJoinLines",
"Shortcut": [
{
"FirstKS": "control U",
"SecondKS": "alt shift 6"
},
{
"FirstKS": "control U",
"SecondKS": "alt CIRCUMFLEX"
}
]
},
{
"Id": "CommentByLineComment",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control C"
}
},
{
"Id": "EditorStartNewLine",
"Shortcut": {
"FirstKS": "control M"
}
},
{
"Id": "ReloadFromDisk",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "control V"
}
},
{
"Id": "EmacsStyleIndent",
"Shortcut": [
{
"FirstKS": "TAB"
},
{
"FirstKS": "alt I"
}
]
},
{
"Id": "ToggleLineBreakpoint",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "SPACE"
}
},
{
"Id": "StepOver",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control N"
}
},
{
"Id": "StepInto",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control S"
}
},
{
"Id": "Resume",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control R"
}
},
{
"Id": "RunToCursor",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control U"
}
},
{
"Id": "ToggleTemporaryLineBreakpoint",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control T"
}
},
{
"Id": "EvaluateExpression",
"Shortcut": {
"FirstKS": "control C",
"SecondKS": "control P"
}
},
{
"Id": "Emacs+.WhatCursorPos",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "EQUALS"
}
},
{
"Id": "Emacs+.BackToIndentation",
"Shortcut": [
{
"FirstKS": "alt M"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "M"
}
]
},
{
"Id": "Emacs+.Recenter",
"Shortcut": {
"FirstKS": "control L"
}
},
{
"Id": "Emacs+.ExchangePointAndMark",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "control X"
}
},
{
"Id": "Emacs+.DeleteOtherWindows",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "1"
}
},
{
"Id": "Emacs+.CommentDwim",
"Shortcut": [
{
"FirstKS": "alt SEMICOLON"
},
{
"FirstKS": "control alt SEMICOLON"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "SEMICOLON"
}
]
},
{
"Id": "Emacs+.CommentKill",
"Shortcut": [
{
"FirstKS": "control U",
"SecondKS": "alt SEMICOLON"
},
{
"FirstKS": "control U",
"SecondKS": "control alt SEMICOLON"
}
]
},
{
"Id": "Emacs+.CommentNextLine",
"Shortcut": [
{
"FirstKS": "alt N"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "N"
}
]
},
{
"Id": "Emacs+.CommentPreviousLine",
"Shortcut": [
{
"FirstKS": "alt P"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "P"
}
]
},
{
"Id": "Emacs+.CommentIndentNew",
"Shortcut": [
{
"FirstKS": "control alt J"
},
{
"FirstKS": "alt J"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "J"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "control J"
}
]
},
{
"Id": "Emacs+.TransposeChars",
"Shortcut": {
"FirstKS": "control T"
}
},
{
"Id": "Emacs+.TransposeWords",
"Shortcut": {
"FirstKS": "alt T"
}
},
{
"Id": "Emacs+.TransposeLines",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "control T"
}
},
{
"Id": "Emacs+.DeleteIndentation",
"Shortcut": [
{
"FirstKS": "alt shift 6"
},
{
"FirstKS": "alt CIRCUMFLEX"
}
]
},
{
"Id": "Emacs+.JustOneSpace",
"Shortcut": [
{
"FirstKS": "alt SPACE"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "SPACE"
}
]
},
{
"Id": "Emacs+.DeleteHorizSpace",
"Shortcut": [
{
"FirstKS": "alt BACK_SLASH"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "BACK_SLASH"
}
]
},
{
"Id": "Emacs+.DeleteBlankLines",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "control O"
},
"#text": "/>"
},
{
"Id": "Emacs+.Yank",
"Shortcut": {
"FirstKS": "control Y"
}
},
{
"Id": "Emacs+.YankPop",
"Shortcut": [
{
"FirstKS": "alt Y"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "Y"
}
]
},
{
"Id": "Emacs+.CapitalizeWord",
"Shortcut": [
{
"FirstKS": "alt C"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "C"
}
]
},
{
"Id": "Emacs+.DowncaseWord",
"Shortcut": [
{
"FirstKS": "alt L"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "L"
}
]
},
{
"Id": "Emacs+.UpcaseWord",
"Shortcut": [
{
"FirstKS": "alt U"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "U"
}
]
},
{
"Id": "Emacs+.KillWord",
"Shortcut": [
{
"FirstKS": "alt D"
},
{
"FirstKS": "control DELETE"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "D"
},
{
"FirstKS": "control alt K"
}
]
},
{
"Id": "Emacs+.KillWordBackward",
"Shortcut": [
{
"FirstKS": "alt DELETE"
},
{
"FirstKS": "control BACK_SPACE"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "DELETE"
},
{
"FirstKS": "control alt DELETE"
},
{
"FirstKS": "control alt BACK_SPACE"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "control DELETE"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "control BACK_SPACE"
}
]
},
{
"Id": "Emacs+.KillLine",
"Shortcut": {
"FirstKS": "control K"
}
},
{
"Id": "Emacs+.KillWholeLine",
"Shortcut": {
"FirstKS": "control shift BACK_SPACE"
}
},
{
"Id": "Emacs+.CutLineBackwardKey",
"Shortcut": {
"FirstKS": "alt MINUS",
"SecondKS": "control K"
}
},
{
"Id": "Emacs+.KillRegion",
"Shortcut": {
"FirstKS": "control W"
}
},
{
"Id": "Emacs+.SaveRegion",
"Shortcut": [
{
"FirstKS": "alt W"
},
{
"FirstKS": "ESCAPE",
"SecondKS": "W"
}
]
},
{
"Id": "Emacs+.AppendNextKill",
"Shortcut": {
"FirstKS": "control alt W"
}
},
{
"Id": "Emacs+.ISearchForward",
"Shortcut": {
"FirstKS": "control S"
}
},
{
"Id": "Emacs+.ISearchForwardRegexp",
"Shortcut": {
"FirstKS": "control alt S"
}
},
{
"Id": "Emacs+.ISearchBackward",
"Shortcut": {
"FirstKS": "control R"
}
},
{
"Id": "Emacs+.ISearchBackwardRegexp",
"Shortcut": {
"FirstKS": "control alt R"
}
},
{
"Id": "Emacs+.QueryReplace",
"Shortcut": {
"FirstKS": "shift alt 5"
}
},
{
"Id": "Emacs+.QueryReplaceRegexp",
"Shortcut": {
"FirstKS": "shift control alt 5"
}
},
{
"Id": "Emacs+.ISYankNextWord",
"Shortcut": {
"FirstKS": "control W"
}
},
{
"Id": "Emacs+.ISYankLine",
"Shortcut": {
"FirstKS": "control Y"
}
},
{
"Id": "Emacs+.ISYankLast",
"Shortcut": {
"FirstKS": "alt Y"
}
},
{
"Id": "Emacs+.ISYankChar",
"Shortcut": {
"FirstKS": "control alt Y"
}
},
{
"Id": "Emacs+.ISDeleteChar",
"Shortcut": {
"FirstKS": "control alt W"
}
},
{
"Id": "Emacs+.ISCase",
"Shortcut": {
"FirstKS": "alt C"
}
},
{
"Id": "Emacs+.ISMultiLine",
"Shortcut": {
"FirstKS": "alt M"
}
},
{
"Id": "Emacs+.ISRegex",
"Shortcut": {
"FirstKS": "alt R"
}
},
{
"Id": "Emacs+.ISWords",
"Shortcut": {
"FirstKS": "alt W"
}
},
{
"Id": "Emacs+.ISearchHistoryPrevious",
"Shortcut": {
"FirstKS": "alt P"
}
},
{
"Id": "Emacs+.ISearchHistoryNext",
"Shortcut": {
"FirstKS": "alt N"
}
},
{
"Id": "Emacs+.ISEnter",
"Shortcut": {
"FirstKS": "ENTER"
}
},
{
"Id": "Emacs+.ISForwardDelete",
"Shortcut": {
"FirstKS": "control D"
}
},
{
"Id": "Emacs+.SwitchToBuffer",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "B"
}
},
{
"Id": "Switcher"
},
{
"Id": "RecentFiles"
},
{
"Id": "Emacs+.TWSelectNext",
"Shortcut": {
"FirstKS": "control N"
}
},
{
"Id": "Emacs+.TWSelectPrevious",
"Shortcut": {
"FirstKS": "control P"
}
},
{
"Id": "Emacs+.TWInterrupt",
"Shortcut": [
{
"FirstKS": "control G"
},
{
"FirstKS": "control X",
"SecondKS": "O"
}
]
},
{
"Id": "Emacs+.TWScrollUp",
"Shortcut": {
"FirstKS": "control V"
}
},
{
"Id": "Emacs+.TWScrollDown",
"Shortcut": {
"FirstKS": "alt V"
}
},
{
"Id": "Emacs+.TWBegin",
"Shortcut": [
{
"FirstKS": "alt shift COMMA"
},
{
"FirstKS": "alt LESS"
}
]
},
{
"Id": "Emacs+.TWEnd",
"Shortcut": [
{
"FirstKS": "alt shift PERIOD"
},
{
"FirstKS": "alt GREATER"
}
]
},
{
"Id": "FileChooser.TogglePathShowing",
"Shortcut": {
"FirstKS": "control X",
"SecondKS": "control P"
}
},
{
"Id": "$Copy"
},
{
"Id": "$Cut"
},
{
"Id": "EditorCutLineBackward"
},
{
"Id": "EditorCutLineEnd"
},
{
"Id": "EditorKillToWordEnd"
},
{
"Id": "EditorDeleteToWordStart"
},
{
"Id": "EditorKillToWordStart"
},
{
"Id": "EditorScrollToCenter"
},
{
"Id": "EditorSwapSelectionBoundaries"
},
{
"Id": "Find"
},
{
"Id": "FindPrevious"
},
{
"Id": "Replace"
},
{
"Id": "JumpToLastChange"
},
{
"Id": "EditorKillRegion"
},
{
"Id": "$Paste"
},
{
"Id": "PasteMultiple"
},
{
"Id": "NextProjectWindow"
},
{
"Id": "UnsplitAll"
},
{
"Id": "Vcs.UpdateProject"
},
{
"Id": "CompareTwoFiles"
},
{
"Id": "Diff.ShowDiff"
},
{
"Id": "CheckinProject"
}
]
}