A Collection of all Keyboard Shortcuts I use

All blog posts

Introduction

I believe that typing proficiency is important for a software engineer. It is easier to stay in flow if you can type fast and navigate around your IDE and tools with shortcuts. In fact, I love that a part of our job has to do with manual skills. Improving these physical skills is a nice change from learning new technologies and tools.

A good start for getting better at something is to find out where you stand. At first, I wanted to get an overview of how many shortcuts I know and use. So, last year, I created a database of my shortcuts in Notion. I already described this in my post on personal knowledge management. In the process, I found some inconsistencies and tried to use the same key combination in as many applications as possible.

Since then, I have thought a lot more about this whole thing. I should probably not tell you that I had a few dreams where keyboard shortcuts played a prominent role. Anyway, I spent much of my social distancing free time on my first published solo project: KeyCombiner. It has made creating and maintaining my shortcut database much simpler.

This collection is also shared and available via KeyCombiner, which allows for more complex filtering and searching and enables you to import selected shortcuts into your personal collections.

The tables in this post are generated by using KeyCombiner’s CSV export and converting it to Markdown with this handy web tool. The collection is split by context. By context, I mean the application or type of applications in which the shortcut can be used.

Essential

The context of these shortcuts is not further defined because I expect them to work anywhere. As the name suggests, I think these shortcuts are so ubiquitous that everyone should know them.

Description Context Category Keys
New File Essential File Management ctrl + n
Open File… Essential File Management ctrl + o
Save Essential File Management ctrl + s
Save As… Essential File Management ctrl + shift + s
Close Essential File Management ctrl + w
Print Essential General ctrl + p
Refresh Essential General f5
Go Back Essential Navigation alt + left
Go Forward Essential Navigation alt + right
Search Essential Navigation ctrl + f
Cut selection Essential Basic Editing ctrl + x
Copy selection Essential Basic Editing ctrl + c
Paste Essential Basic Editing ctrl + v
Paste without formatting Essential Basic Editing ctrl + shift + v
Undo Essential Basic Editing ctrl + z
Redo Essential Basic Editing ctrl + y
Go to Beginning of Line Essential Basic Editing home
Go to End of Line Essential Basic Editing end
Open a new tab, and jump to it Essential Tab and window ctrl + t
Jump to the next open tab Essential Tab and window ctrl + tab
Open a new window Essential Tab and window ctrl + n

Editor

The next set of shortcuts is applicable in any kind of editing software. Except the first one (Replace), these work in pretty much all text fields independent of application.

Description Context Category Keys
Replace Editor Basic Editing ctrl + h
Left with Selection Editor Basic Editing shift + left
Right with Selection Editor Basic Editing shift + right
Move to Line End with Selection Editor Basic Editing shift + end
Move to Line Start with Selection Editor Basic Editing shift + home
Move to Next Word Editor Basic Editing ctrl + right
Move to Next Word with Selection Editor Basic Editing ctrl + shift + right
Move to Previous Word Editor Basic Editing ctrl + left
Move to Previous Word with Selection Editor Basic Editing ctrl + shift + left
Indent Selection Editor Basic Editing tab
Unindent Selection Editor Basic Editing shift + tab

IDE

As a software engineer, this context is very important for me. In my experience, many complex IDE features, especially those related to refactoring, are not used at all if one does not know the shortcut. So in this case, knowing additional shortcuts does not only make you faster, it gives access to additional features.

Those features can sometimes even have an impact on code quality. For example, if you know a shortcut to extract a selected code block into a method, you might be less prone to writing large blocks of code that are hard to read. Knowing the common debugging shortcuts can make you more comfortable with the process and less inclined to use print statements.

Currently, I use VSCode, PyCharm, and Eclipse as IDEs for different languages and project sizes. I have configured the listed shortcuts to work in all of them, except for some that I only use in PyCharm.

Description Context Category Keys
Go to File…, Quick Open IDE Navigation ctrl + p
Show command prompt IDE Navigation ctrl + shift + p
Open Resource IDE Navigation ctrl + shift + r
Switch to recent file IDE Navigation ctrl + e
Go to symbol in current file (outline) IDE Navigation ctrl + o
Go to Symbol in Workspace IDE Navigation ctrl + shift + t
Go to line number… IDE Navigation ctrl + l
Format Document IDE Rich Languages Editing ctrl + shift + f
Go to Definition IDE Rich Languages Editing f3
Go to References IDE Rich Languages Editing alt + ctrl + r
Rename Symbol IDE Rich Languages Editing shift + alt + r
Search in all files/workspace IDE Search alt + ctrl + f
Start Debugging IDE Debug f11
Continue IDE Debug f5
Mute Breakpoints IDE Debug f6
Step Into IDE Debug f7
Step Over IDE Debug f8
Stop Run/Debug IDE Debug f9
Move Line Down IDE Basic Editing alt + down
Move Line Up IDE Basic Editing alt + up
Copy Line Down IDE Basic Editing ctrl + alt + down
Copy Line Up IDE Basic Editing ctrl + alt + up
Delete Line IDE Basic Editing ctrl + d
Split editor horizontally IDE Tab and window alt + t
Split editor vertically IDE Tab and window alt + d
Extract Method PyCharm Refactoring ctrl + alt + m
Introduce Variable PyCharm Refactoring ctrl + alt + v
Introduce Field PyCharm Refactoring ctrl + alt + f
Introduce Constant PyCharm Refactoring ctrl + alt + c
Cut line (empty selection) PyCharm Basic Editing ctrl + x
Copy line (empty selection) PyCharm Basic Editing ctrl + c

OS

The shortcuts in this section are among my most used ones. For anyone of these, I can say with certainty that I use it many times a day.

You might notice the Media shortcuts with keys, such as num2. I repurposed my Numpad for this because I don’t use it for typing numbers. Reassigning keys works especially well with my keyboard with blank keycaps The labeling can never be wrong because there is none ;)

The first entry in this context’s table represents 9 separate shortcuts. Switching between applications via super + 1-9 has been a noticeable productivity boost for me. I rarely have to start an application by other means now.

Description Context Category Keys
Open application 1-9 OS Navigation super + 1-9
Go to previous application OS Navigation alt + Tab
Move window to screen on the left OS Navigation super + shift + Left
Move window to screen on the right OS Navigation super + shift + Right
Cycle through windows of current application OS Navigation alt + ^
Play (Music etc.) OS Media num2
Previous Track OS Media num1
Next Track OS Media num3
Mute Sound OS Audio num5
Mute Mic OS Audio num7
Increase Volume (louder) OS Audio num6
Decrease Volume OS Audio num9
Put window to left half of monitor OS Window Management super + left
Put window to right half of monitor OS Window Management super + right
Show Albert launcher OS Navigation super + shift + p

Chrome

Many of the shortcuts that I use most frequently while browsing the internet are already covered in the sections above. However, there are some keyboard combinations unique to web browsing.

Description Context Category Keys
Open the History page in a new tab Chrome Google Chrome features ctrl + h
Open the Downloads page in a new tab Chrome Google Chrome features ctrl + j
Jump to the address bar Chrome Address bar ctrl + l
Search with default search engine Chrome Address bar ctrl + k
Return everything on the page to default size Chrome Webpages ctrl + 0
Go to the top of the page Chrome Webpages home
Go to the bottom of the page Chrome Webpages end
Open a new window in Incognito mode Chrome Tab and window ctrl + shift + n

Web Apps

Until recently, I didn’t use a lot of web application keyboard shortcuts. I feel like the applications are partly to blame for this. Why is it not common to show keyboard shortcuts in button tooltips? Or even in a small notification when a user does an action via mouse? Anyway, working on KeyCombiner motivated me to expand my shortcut knowledge in this area.

I have some learning ahead of me, but I am not quite comfortable with my most used apps. Knowing web application shortcuts is quite rewarding because the respective action would often take multiple mouse clicks. Sometimes it is even hard to find the right button for it, if you don’t know an action’s shortcut.

Description Context Category Keys
Jump to a conversation Slack Navigation ctrl + k
Next unread channel or DM Slack Navigation alt + shift + down
Go to the project home page (Project > Details). GitLab Project g > p
Go to the project issue boards list (Issues > Boards). GitLab Project g > b
Go to the project file search page. GitLab Project t
Go to the project commits list (Repository > Commits). GitLab Project g > c
Go to the project merge requests list (Merge Requests). GitLab Project g > m
Go to the CI/CD jobs list (CI/CD > Jobs). GitLab Project g > j
Go to the project wiki (Wiki), if enabled. GitLab Project g > w
Edit description. GitLab Issues and Merge Requests e
Change assignee. GitLab Issues and Merge Requests a
Change label. GitLab Issues and Merge Requests l
Edit wiki page. GitLab Wiki pages e
Rename selected item GDrive Take action on selected items n
Go to personal collections KeyCombiner Global Navigation g > c
Go to public collections KeyCombiner Global Navigation g > p
Go to personal collection 1 KeyCombiner Global Navigation c > 1
Learn personal collection 1 KeyCombiner Global Navigation l > 1
Test your skills with personal collection 1 KeyCombiner Global Navigation t > 1
Skip current combination KeyCombiner During Learn or Test esc
Learn current collection KeyCombiner Collections shift + l
Copy selected combinations to personal collection 1 KeyCombiner Collections shift + c > 1
Search or jump to a recently viewed page. Notion Most popular ctrl + p
Create a line break within a block of text Notion Create & style your content shift + enter
Bold selected text Notion Create & style your content ctrl + b
Italicize selected text Notion Create & style your content ctrl + i
Turn selected text into inline code Notion Create & style your content ctrl + e
Duplicate selected blocks Notion Edit & move blocks ctrl + d

Conclusion

It is probably not a good idea to copy my collection, but seeing what kind of shortcuts are used by another software engineer might give you some ideas. Maybe I could even inspire you to create a similar list of your own shortcuts. If so, you might want to try out KeyCombiner, as I am sure it’s the most efficient way of accomplishing this.

After you created such a collection of all the shortcuts you use, you might realize that a mere spreadsheet cannot give a full picture of your shortcuts skills. Many questions remain:

  • How well do you actually know them?
  • How fast can you type them?
  • How often do you make an error while typing a shortcut?

KeyCombiner is built to answer precisely these questions with its interactive training features.

Am I missing some important shortcuts? I would be very interested to hear your suggestions.


comments powered by Disqus

  Blog Post Tags