Command Palette

VS Code is equally accessible from the keyboard. The most important key combination to know is Ctrl+Shift+P, which brings up the Command Palette . From here, you have access to all of the functionality of VS Code, including keyboard shortcuts for the most common operations.

Command Palette
(source: robdodson.me)

The Command Palette provides access to many commands. You can execute editor commands, open files, search for symbols, and see a quick outline of a file, all using the same interactive window. Here are a few tips:

another example from fman

The quickest way to explore fman's shortcuts is via the Command Palette :

Simply press Ctrl+Shift+P (or Cmd+Shift+P for Mac) in fman to open it.

Now that the Command Palette (see above) has become a normal UI feature for power users & developers across some apps (vscode, sublimetext, some pythonide, jupyterlab ...etc), I think that in any complex program with many hidden tools/features, a command palette would be of great use.

A modern command palette serves 3 distinct purposes as far as I can see

  • Discovery of commands/features based on what you want to do (i.e. duplicate a file? export a tree view ? create a timestamped zip ? ...etc.)
  • Discovery of shortcuts
  • Executing commands that have no obvious visual interface or is deeply nested somewhere and would require a few clicks. Or for the lazy who type faster then move the mouse and click and don't remember the shortcuts.

The way I see human memory works, is by associating which is the basic dictionary object (key, value). And our intent also is directly related to the action we want to take. Typically in any software a user has to learn to map his intent to the learned behavior of steps to execute in the software to achieve their aim. (let me know if I can explain all this better). I find that the command palette shortcuts this approach and allows a faster learning/doing experience.

I personally find it easier to remember words and actions of what I want to achieve than the steps I need to do to make it happen, so often I have to google up the exact recipe and execute it manually. However, a command palette assists with that greatly and reduces the effort required to do things. Google has also greatly influenced people to move away from structured information to queriable(?)/searchable information. I have also always thought that the command line was great for executing when you know what you want, and UI is great for discovery.

As for far in the future, we are moving from learning behaviors to just dictating what we want and let the software figure it out, this is what all this assistant stuff is for I think.

So my question is, is this only useful for people of certain types (i.e. developers) or is it widely applicable to the general populace?

MacOS has the help search feature, which is similar or it's action item which is quite good.

If anyone wanted to implement such a feature in a software, what would be the guidelines for them from a UX perspective?

3 Answers 3


This is an interesting question and like a few questions it hasn't received an answer yet. My view about this is that the trend of modern applications is the reduction in amount of features, unless it is aimed at professional/enterprise level with a large enough number of power users. Therefore, it is less likely that you will find this type of feature in applications for general users (e.g. email or e-commerce).

However, if you look far back enough, Microsoft Office applications had certain features that allows users to customize their toolbar and shortcuts (there come with default settings and configurations). I think that this type of command palette feature is a little bit more user friendly (or at least faster) than the interface that MS Office offered to find the features.

I think if such a feature was to be implemented in modern UI, you have already listed some good references and examples to start with, plus these days the autocomplete design pattern is familiar to many people so a likely starting point is to build on it and introduce context sensitive variations depending on the user behaviour or the type of application (or both).


It could be a powerful feature for normal users too, if it was visible and visually findable without knowing they keyboard shortcut.


Clark Aldrich pointed out that, "For actions, here are the biggest questions: what are the seriously considered options available to an expert? Then, what do naïve people do?"

The trick, which I've tried to keep in mind with any complex web apps, is to make things possible for new users, but enable experts to do the same work more efficiently. I would therefore link a menu of actions, with the keyboard shortcuts known. You then offer inexperienced users the keyboard option when they're ready, and experts can just ignore the link. This has the virtue of fitting Nielsen's "flexibility and efficiency of use" usability heuristic. The basics help with the complicated issues, too :-)

Regarding the keyboard-invoked command palette, that might be a great convenience when you've scrolled away from the visual menu. So perhaps the top level can show its own keyboard combo, so power users can just learn the combo and ignore the visual menu thereafter. Something roughly like this:

Action menu ________[combo here] v

Action 1 ____________[combo]

Action 2 ____________[combo]

Action 3 ____________[combo]

Update: To be clear (a commenter wasn't certain what I meant): Yes, command palettes are great tools for power users, just not only power users." Also, context drives the need (or lack thereof) for such a menu. Hope that helps!

  • So, is the command palette a tool for power users?
    – Nash
    Jun 3, 2022 at 7:23
  • I think my strong "yes, but not only power users" response is clearly made above, but I will edit to improve clarity.
    – Alex
    Jun 3, 2022 at 20:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.