note
My Keybindings
What is the point of my keybindings
I’m a multidisciplinary developer, which is reflected by the amount of IDEs and environments that I usually work with, from CLI tools to fully fledge IDEs and other interfaces and having to switch between them usually results in a lot of “how do I do this in this X” and although I recognise that most softwares keybindings are well though it is also true that you spend the 90% switching between the same actions, and so I can risk that 10% of time to just look for that functionality that I want to do.
Structure
To be able to move effectively I fist have to define the layers and types of interface that I work with, these are:
Operating System
I use a Mac as an operating system and although this can be easily not be your case (or mine in a few years) it is important to consider your OS and how you move around it, so even tough you might not have the same OS the same principles can apply, just find the equivalent software.
- Window Manger: The windows are something entirely reliant on the OS
- Launcher: In the case of macOS spotlight allows you to quickly launch applications.
Applications / GUI
These are any software that comes with a graphical interface, in this case most of the keybindings are going to be meant to navigate between panels of the application on the XYZ axis and some miscellaneous configurations.
Terminal / CLI
The terminal is the most portable interface that you can bring with you, and I try to do most of my work on it, the most important feature of the CLIs is that it is simple and easily portable to other computers, and even, clouds.
OperatingSystem-level Keybindings
This section are the keybindings that are available on a **system-wide **mostly about managing windows and apps across monitors and layouts.
The keys responsible for this layer are:
⇪ - BlockMay (which is set as a combination of Shift, control and command)
⇪ + ⌥ - This is mostly used in combination with BlockMay
| Action | Keybinding | Description (optional) |
|---|---|---|
| ⌘ + Space | Spotlight / Raycast | On macOS this is Raycast |
| Moving between desktop/screens | ||
| ⇪ + [number] | Switch to desktop | This can be set on Keyboard → Shotcuts → Mission control |
| ⇪ + s | Focus Screen 1 / 2 | I usually have two monitors, the laptop and the monitor one on top and one below. |
| Throwing Windows | ||
| ⇪ + ⌥ + [number] | Throw focused window to desktop | |
| Window Layout | ||
| ⇪ + w | Rotate focus clockwise | |
| ⇪ + ⌥ + r | Rotate window layout | |
| ⇪ + m | Full screen focused window | |
| ⇪ + ⌥ + m | Floating layout | |
| ⇪ + e | Change main screen on current layout | |
| ⇪ + ⌥ + t› | Toggle floating or window management | |
| Misc | ||
| ⇪ + / | Toggle AI chat | |
| ⇪ + . | Toggle floating notes | |
| ⇪ + , | Toggle translator window | |
| ⇪ + t | Toggle floating terminal | |
| ⇧ + ⌘ + 4 | Screenshot area | |
| ⇧ + ⌘ + 5 | Record Area | |
| ⇪ + f | Click with vim mode | |
| ⇪ + j | Scroll anywhere (j/k) |
App-level Keybindings
This sections is for any GUI app installed on the system, although is mostly focused on code editors and IDEs it can be abstracted into other apps.
The main keys responsible for this layer are:
⌘ - Command
⌃ - Control
⌥ - Option
| ACTIONS | General app actions | |
|---|---|---|
| Keybinding | Action | Description (optional) |
| ⌘ + p | Command palette | |
| ⌘ + ⇧ + p | Search Commands | |
| ⌘ + f | Find in window | |
| ⌘ + ⇧ + f | Find in space | |
| ⌘ + r | Run / Reload | |
| MENU | This section is for general app menus | asdw = game-like |
| ⌥ + a | Left side menu | |
| ⌥ + d | Right side menu | |
| ⌥ + w | Bottom side menu | |
| ⌥ + s | Search (files/tabs) | |
| ⌥ + w | Bottom menu | |
| ⌥ + t | Terminal | |
| FILE MENU | ||
| ⌘ + w | Close window | |
| ⌘ + n | Create file | |
| ⌘ + ] | Next tab | |
| ⌘ + [ | Previous tab | |
| ⌃ + Tab | Switch recent tabs | |
| EDDITING | ||
| ⌘ + . | Toggle block fold | |
| ⌘ + ⇧ + . | Fold All | |
| ⌘ + ⇧ + , | Unfold All | |
| Rename file | ||
| ⌘ + ↑ | Move line | |
| ⌘ + ⇧ + ↓ | Duplicate line | |
| SPLIT PANELS | ||
| ⌃ + | | Split to right | |
| ⌃ + ⟶ | Focus to right | |
| ⌃ + ← | Focus left |
Code-Edit / My Vim bindings
| Action | Binding | NeoVim | Intellij | VSCode | XCode |
|---|---|---|---|---|---|
| Go to definition | g d | ✓ | |||
| Go to type definition | g D | ||||
| Show Usages | g i | ✓ | |||
| Change Definition (Rename) | c d | ✓ | |||
| Find Symbol in Current file | g s | ||||
| Find Symbol in Entire Project | g S | ||||
| Select next word | <C-n> | ✓ | |||
| Hover / Show error | g h | ||||
| Code actions | ⌘ . | ||||
| Insert cursor below/above | <C-↑> | ✓ | |||
| Delete without saving | |||||
| Move up / down selected line | |||||
| Open Tmux projects | leader p s | ✓ | |||
| Open Explorer | e | ||||
| Open Explorer (Relative) | E | ||||
| Open Command palette | P/K | ||||
| Open Files | p | ||||
| Open Git | 1 | ||||
| Open terminal | 2 | ||||