Keyshots is an Obsidian plugin that adds classic hotkey/shortcuts commands from popular IDEs like Visual Studio Code or JetBrains Family.
Keyshots adds actions like move line up or down...
...add caret cursor up or down...
...insert lines above or below...
...duplicate line up or down...
...duplicate text or selection...
...toggle readable line length inside editor...
...toggle line numbers inside editor...
...encode or decode URI text...
...transform selected texts to lowercase, uppercase or titlecase...
...join selected lines to one line...
...split selections on new line and trim selection...
...sort selected lines with alphanumeric comparison...
...transform selections to or from snakecase...
...and much more commands to explore! (And more are comming soon)
Here is a full list of all Keyshots commands with mappings of hotkeys that are available. If any of hotkey for IDE action is missing, Keyshots mappings hotkey is used instead (This behavior can be changed in settings).
Hotkeys | Keyshots Default Mappings | Visual Studio Code | JetBrains IDEs | Microsoft Visual Studio |
---|---|---|---|---|
Duplicate line down (Visual Studio Code) |
Shift + Alt + โ | Shift + Alt + โ | ||
Duplicate line up (Visual Studio Code) |
Shift + Alt + โ | Shift + Alt + โ | ||
Duplicate selection or line (JetBrains IDEs) |
Ctrl + Alt + D | Ctrl + D | Ctrl + D | |
Insert line above |
Ctrl + Shift + Enter | Ctrl + Shift + Enter | Ctrl + Alt + Enter | Ctrl + Enter |
Insert line below |
Shift + Enter | Ctrl + Enter | Shift + Enter | Shift + Enter |
Join selected lines |
Ctrl + Shift + J | Ctrl + J | Ctrl + Shift + J | |
Move line down |
Alt + โ | Alt + โ | Shift + Alt + โ | Alt + โ |
Move line up |
Alt + โ | Alt + โ | Shift + Alt + โ | Alt + โ |
Reverse selected lines |
Alt + R | |||
Shuffle selected lines |
Ctrl + Shift + Alt + S | |||
Sort selected lines |
Ctrl + Shift + S | |||
Better insert callout |
Shift + Alt + C | |||
Insert code block |
Ctrl + Shift + ` | |||
Insert ordinal numbering |
Shift + Alt + N | |||
Insert Table |
Shift + Alt + T | |||
Close all foldable callouts |
Shift + Alt + L | |||
Open all foldable callouts |
Shift + Alt + O | |||
Toggle all callouts fold state |
Shift + Alt + K | |||
Multi-toggle bold |
Ctrl + Shift + B | |||
Multi-toggle code |
Ctrl + Shift + C | |||
Multi-toggle comment |
Ctrl + Shift + / | |||
Multi-toggle highlight |
Ctrl + Shift + H | |||
Multi-toggle italic |
Ctrl + Shift + I | |||
Multi-toggle strikethrough |
Ctrl + Shift + M | |||
Replace by Regular Expression (Regex) |
Ctrl + Alt + H | |||
Toggle case (JetBrains) |
Ctrl + Shift + U | Ctrl + Shift + U | ||
Toggle selections kebabcase |
Alt + - | |||
Toggle keyboard input (<kbd>) |
Ctrl + Shift + K | |||
Toggle selections snakecase |
Shift + Alt + - | |||
Toggle underline |
Alt + N | |||
Toggle selections URI encoded/decoded string |
Ctrl + Alt + U | |||
Transform selections to lowercase |
Alt + L | Ctrl + U | ||
Transform selections to titlecase (capitalize) |
Alt + C | |||
Transform selections to uppercase |
Alt + U | Ctrl + Shift + U | ||
Trim selections |
Alt + T | |||
Add caret cursor down |
Ctrl + Alt + โ | Ctrl + Alt + โ | Shift + Alt + โ | |
Add caret cursor up |
Ctrl + Alt + โ | Ctrl + Alt + โ | Shift + Alt + โ | |
Search by Regular Expression (Regex) |
Ctrl + Alt + S | |||
Select all word instances |
Ctrl + Shift + L | Ctrl + Shift + L | Ctrl + Shift + Alt + J | Shift + Alt + ; |
Select multiple word instances |
Ctrl + D | Ctrl + D | Alt + J | Shift + Alt + . |
Split selections by lines |
Ctrl + Alt + L | |||
Expand line selections |
Alt + E | Ctrl + L | Ctrl + W | Shift + Alt + = |
Split selections on new line |
Alt + S | |||
Go to next fold |
Ctrl + Alt + ] | |||
Go to previous fold |
Ctrl + Alt + [ | |||
Go to parent fold |
Ctrl + Alt + P | |||
Switch 'inline title' setting |
Ctrl + Alt + T | |||
Switch 'line numbers' setting |
Ctrl + Alt + N | |||
Switch 'readable line length' setting |
Ctrl + Alt + R | |||
Open developer tools |
F12 | |||
Reopen current note |
Alt + Q | |||
Toggle focus mode |
Ctrl + Alt + F | |||
Change Keyshots preset |
Ctrl + Shift + P | |||
Open Keyshots settings tab |
Ctrl + Alt + , | |||
Switch Keyshots case sensitivity |
Ctrl + Alt + I |
Double key commands are feature used in JetBrains IDEs, that are doing certain actions after specific key is pressed twice.
Now Keyshots has two double-key commands:
- Ctrl - Pressing and holding last key and then press โ or โ will
add caret cursor just like
Add caret cursor up
orAdd caret cursor down
do - Shift - If you have internal plugin
Quick Switcher
enabled, then this shortcut will open quick switcher window just like Ctrl + O does
If you do not like them, then you can disable them in settings.
Adds ability to choose default hotkeys mappings by IDEs presets. You can also configure behavior of some commands.
You can choose from these IDEs presets:
- Clear (everything blank; set in default when keyshots are installed)
- Visual Studio Code
- JetBrains IDEs Family (IntelliJ IDEA, PyCharm, WebStorm, ... )
- Microsoft Visual Studio
- Keyshots default hotkeys mappings
You can change it also via modal window inside obsidian that you can open with command "Change Keyshots preset" with Ctrl + Shift + P shortcut.
Some IDE commands have hotkey, that is already set to another Obsidian action and that results into conflict.
Here is list of all possible conflicts:
Hotkey | Visual Studio Code | JetBrains IDEs | Microsoft Visual Studio | Obsidian Action |
---|---|---|---|---|
Ctrl + L | Expand line selections | Toggle checkbox status | ||
Ctrl + Enter | Insert line below | Insert line above | Open link under cursor in new tab | |
Ctrl + W | Expand line selections | Close current tab | ||
Ctrl + Alt + Enter | Insert line above | Open link under cursor to the right |
For default Keyshots mappings I will take care of all conflicts with Obsidian hotkeys. However, mind that I can take care of obsidian hotkeys only meaning that plugins hotkeys are irrelevant and impossible to handle due to unlimited plugin amount.
Also, obsidian team recommends to don't set default hotkeys for commands and that is why Keyshots installs with "clear" preset!
Transform selections to Uppercase
Transform selections to Lowercase
Transform selections to Titlecase
Sort selected lines by alphanumeric comparison
Encode / Decode URI selections
Toggle line numbers
Join selected lines
Split selections on new line
Now, Keyshots are able to pick from one of presets that you choose and use their's default hotkeys.
Available presets:
- Visual Studio Code
- Jetbrains IDEs (IntelliJ IDEA, PyCharm, WebStorm, ...)
In new version I added keymaps of Visual Studio. From now you can change it in plugin settings!
Based on a recommendation by Obsidian Team, I added preset, that is set in default, which has no default Hotkeys.
Open Keyshots settings
Select all word instances
Select multiple word instances
Shuffle selected lines
(with shuffle rounds option)Toggle Keyshots case sensitivity
Toggle case (JetBrains)
Transform selections from / to Kebabcase
Toggle inline title (setting)
Split selections by lines
Expand line selections
- Toggle case sensitivity in settings - toggles case sensitivity for
Select multiple word instances
andSelect all word instances
commands - Use keyshots hotkeys combined with selected IDE - whenever you select any IDE preset, then keyshots merge it's mapping with IDE mapping, if you don't want this to happen, you can just disable it!
- Now commands will not "glitch" text when performing undo/redo action on them
- Now all presets have full mappings for all actions (if specific IDE has it defaultly) - i have full map in README!
Multi-togglers are commands that are already in Obsidian, but they provide ability to perform actions with multiple selections.
For example Multi-toggle bold
surrounds text like this **<text>**
but with multiple selections anywhere in editor.
Change Keyshots preset
- changing keys preset in editorMulti-toggle bold
Multi-toggle italic
Multi-toggle code
Multi-toggle highlight
Multi-toggle comment
Multi-toggle strikethrough
Toggle underline
- underline selected textsToggle keyboard input (<kbd>)
- surrounds text with keyboard-input tagsInsert code block
- inserts code blocks in selections with ability to choose language/code block processingInsert ordinal numbering
- inserts numbers on each selections (1,2,3,4,...)Open developer tools
- opens developer tools (great for developers of plugins)
JetBrains feature to do action after certain key is pressed twice. All about double key commands is mentioned in README.
Current available commands are:
Open Quick Switcher
(double Shift key press)Add caret cursor
(double Ctrl/โ key press and hold last, then press โ or โ to add caret cursors upwards or downwards)
- Updated hotkeys for rest of all commands
- Fixed select word regex to select word correctly
- Fixed selection processing to correctly handle selection replacing on same lines
- Updated commands names to be more clearer and shorter
- Fixed events unregistering for DoubleKeyRegistry when user changed preset
Better insert callout
(displays available callouts to use)Insert Table
Search by Regular Expression (Regex)
Replace by Regular Expression (Regex)
Toggle all callouts fold state
Open all foldable callouts
Close all foldable callouts
- Double key commands won't cancel when interrupted with key while pressing command key #4
- Replace regex modal bad parsing of escape characters
- Fixed Double key registry previous fix to work 100%
- Added react support to my code
Toggle focus mode
- hides ribbon menu, sidebars, and toggle app fullscreenGo to next fold
-Go to previous fold
-Go to parent fold
-- Double key
Open Command-Palette
command via double Ctrl shortcut.
- Made double key quick switcher shortcut to be triggered on second release rather than on second press
- Double key registry registers command on release only if command released in desired timestamp
- Ability to add custom callouts for
Better insert callout
command (#8) - Double shift now improved to be able to select community switch engines, supported plugins are (#7):
- Quick switcher (Core plugin)
- Omnisearch
- Quick Switcher++
- Fixed behavior of
Go to next/previous fold
commands (#5)
Reopen current note
- reopens current note (useful for reloading content that re-loads only when note is closed and opened)
- Fixed behavior of
Expand line selection
command (#11) - Fixed preview behavior of
excalidraw
for commands based on regex modal - Fixed coloring for
Insert table
command