Guide contents

Keyboard shortcuts on each operating system

Codalus IDE uses a classic IDE's shortcuts by default (Tools → Options → Environment → Keyboard → Keyboard Scheme offers VS Code's, and ReSharper's and Emacs's over the default; see Settings). primary in the key bindings is ⌘ on macOS and Ctrl elsewhere; ctrl is always the physical Control key. Your own bindings (Tools → Open Keyboard Shortcuts) override any default.

Some shortcuts belong to the operating system or the desktop, which takes them before any application sees them. The defaults avoid those, and where a classic shortcut collides, the OS gets a different default.

Completion

Command Windows Linux macOS
Trigger Suggest (List Members) Ctrl+Space, Ctrl+J Ctrl+Space, Ctrl+J ⌥⎋ (the one the menus show), ⌃Space (the Control key), ⌃J
Parameter Info Ctrl+Shift+Space Ctrl+Shift+Space ⌃⇧Space
Complete Word Ctrl+Alt+Space Ctrl+Alt+Space ⌃.
Completion list filters (while the list is open) Alt+C, Alt+I, Alt+E… Alt+C, Alt+I, Alt+E… ⌥C, ⌥I, ⌥E…
Apply Top Fix (Quick Info's Fix) Alt+. Alt+. ⌥.
  • The completion list's filters take Alt and a letter only while the list is open, so the menus' Alt keys and, on macOS, ⌥ characters work as usual otherwise (the letters). With the Emacs scheme, Alt+F, Alt+V and Alt+X stay Emacs's. Alt+J is the target type matches filter.

  • macOS: ⌘Space is Spotlight. ⌃Space (the Control key, as in Xcode and VS Code) works only with one input source: with two or more, macOS's "Select the previous input source" takes it first (System Settings → Keyboard → Keyboard Shortcuts → Input Sources; on by default), and the app never sees it (seen on the maintainer's Mac: U.S. → Greek). So the menus show ⌥⎋, which always reaches the app; ⌃Space and ⌃J work too where macOS leaves them alone, or turn the input-source shortcut off. ⌘⌥Space is Finder search, so Complete Word is ⌃. there.

  • Linux: IBus and Fcitx switch input methods with Ctrl+Space (older setups) or Super+Space. If Ctrl+Space doesn't reach the editor, use Ctrl+J, or change the input method's trigger (ibus-setup → General → Next input method).

  • Windows: the Chinese, Japanese and Korean IMEs can toggle with Ctrl+Space; Ctrl+J works there.

New Project

Ctrl+Shift+N (⌘⇧N on macOS) opens New Project. In it, Alt+Right and Enter go to the next page (Create on the last), Alt+Left goes back, Esc closes it (clearing the search first), Alt+S goes to the search and Down from there into the templates, and Delete removes the selected recent template. On macOS ⌘] and ⌘[ go to the next page and back from anywhere, and ⌥→ and ⌥← do too except in a text box, where they move by word as macOS's text boxes do; the other Alt keys are ⌥. New projects and solutions has the access keys.

Edit's clipboard keys

Undo, Redo, Cut, Copy, Paste and Select All belong to the text controls (Ctrl+Z, Ctrl+Y, Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+A; on macOS ⌘Z, ⇧⌘Z, ⌘X, ⌘C, ⌘V, ⌘A). The Edit menu shows them, and on macOS the global menu carries them as key equivalents, as Mac apps do, with Edit starting with them. They act on the focused text box, editor or terminal; elsewhere (the Solution Explorer) they run what the same keys do there.

The Properties window

Inside the Properties window's grid (and a collection editor's item grid, which is the same), as in the classic IDE: Up and Down move between rows (over the category headers), Right expands a row or a category and Left collapses it, Enter commits what you typed (or goes to an event's handler in Events), Esc puts the value back, Ctrl+C (⌘C on macOS) copies the selected row's value, and Alt+Down (⌥↓ on macOS) or F4 opens the selected row's drop-down. The links under the grid keep their own keys (Enter follows the focused one). Anywhere else, F4 shows the Properties window. On macOS, use ⌥↓: F4 runs Launchpad unless the function keys are set as standard keys (below).

Other shortcuts that differ by OS

Command Windows Linux macOS Why
Add Caret Above / Below Ctrl+Alt+↑ / ↓ Shift+Alt+↑ / ↓ ⌃⌥↑ / ↓ GNOME and KDE switch workspaces with Ctrl+Alt+arrows
Performance Profiler Alt+F2 Shift+Alt+F2 ⌥F2 Alt+F2 is the GNOME and KDE run dialog
Diagnostic Tools Ctrl+Alt+F2 Ctrl+Shift+F2 ⌃⌥F2 Ctrl+Alt+F1…F12 switch Linux virtual terminals
Apply Code Changes (Hot Reload) Alt+F10 Shift+Alt+F10 ⌥F10 Alt+F10 maximizes windows in GNOME
Task Runner Explorer Ctrl+Alt+Backspace Ctrl+Shift+Alt+R ⌃⌥⌫ Ctrl+Alt+Backspace stops the X server where "zap" is enabled
Toggle Outlining Expansion Ctrl+M, Ctrl+M Ctrl+M, Ctrl+M ⌘⌥[ ⌘M minimizes the window on macOS
Collapse to Definitions Ctrl+M, Ctrl+O Ctrl+M, Ctrl+O ⌘K ⌘0 the same
Expand All Outlining Ctrl+M, Ctrl+L Ctrl+M, Ctrl+L ⌘K ⌘J the same
Replace Ctrl+H Ctrl+H ⌘⌥F ⌘H hides the app on macOS
Start Without Debugging Ctrl+F5 Ctrl+F5 ⌃F5 ⌘F5 turns VoiceOver on or off on macOS
Break All Ctrl+Alt+Break Ctrl+Alt+Break ⌘⌥P Mac keyboards have no Break (Pause) key
Git: Toggle Blame Ctrl+Shift+Alt+B Ctrl+Shift+Alt+B ⌘⌥B Ctrl+Alt+B is the Breakpoints window (⌃⌥B on macOS)
Find Usages (ReSharper scheme) Alt+F7 Shift+Alt+F12 ⌥F7 GNOME moves the window with Alt+F7

Shortcuts left as they are, with a note

  • macOS function keys: F11 (Step Into) shows the desktop and F3/F4 run Mission Control and Launchpad unless "Use F1, F2, etc. keys as standard function keys" is on; hold fn otherwise. In the Properties window, ⌥↓ opens a row's drop-down without F4.
  • Ctrl+Alt on European keyboards (Windows): Ctrl+Alt is AltGr, so a few classic Ctrl+Alt shortcuts (Ctrl+Alt+L, Solution Explorer) can type a character on layouts such as Polish. Rebind them if you need those characters.
  • KDE: Ctrl+Alt+L locks the screen; Solution Explorer is also on View → Solution Explorer.

Reserved and never bound by default

  • Windows: Win+anything, Win+Space (input sources), Alt+Space (the window menu), Alt+Tab, Ctrl+Esc, Ctrl+Shift+Esc (Task Manager), Ctrl+Alt+Del.
  • Linux: Super+anything, Alt+F2, Alt+F7, Alt+F10, Ctrl+Alt+F1…F12, Ctrl+Alt+arrows, Ctrl+Alt+T, Ctrl+Alt+Backspace.
  • macOS: ⌘Space, ⌘⌥Space, ⌘Tab, ⌘H, ⌘M, ⌘F5 (VoiceOver), ⌘⌥⎋ (Force Quit), ⌘⇧3/4/5 (screenshots), ⌃↑/⌃↓ (Mission Control), ⌃←/⌃→ (Spaces), ⌃⌥Space (next input source).