---
# System prepended metadata

title: Keyboard shortcuts for HackMD
tags: [tutorials]

---

{%hackmd rJ_1SdPkxx %}

# Keyboard shortcuts for HackMD

### Switching mode

You can use keyboard shortcut to switch mode for editing page:

![image](https://hackmd.io/_uploads/B1tZxXrTR.png =200x)

| Mode         | Windows              | Mac                     |
| ------------ | -------------------- | ----------------------- |
| Edit         | `Ctrl` + `Alt` + `e` | `Ctrl` + `Option` + `e` | 
| Both (Split) | `Ctrl` + `Alt` + `b` | `Ctrl` + `Option` + `b` |
| View         | `Ctrl` + `Alt` + `v` | `Ctrl` + `Option` + `v` |


### Markdown syntax shortcuts

Select some text and use shortcuts to apply markdown syntax format:

| Format        | Windows                                | Mac                  |
| ------------- | -------------------------------------- | -------------------- |
| Bold          | `Ctrl`+`b`                             | `Cmd` + `b`          | 
| Italic        | `Ctrl`+`i`                             | `Cmd` + `i`          |
| Strikethrough | `Ctrl` + `Shift` + <code>&#x60;</code> | `Cmd` + `Ctrl` + `k` |


### Default keymap bindings

HackMD uses CodeMirror to support three keymap bindings styles for Sublime, Emacs and Vim. You can change the key binding through editor status bar:

![image](https://hackmd.io/_uploads/BkdBbmr6C.png =300x)

#### Sublime

| Description                     | Windows/Linux                     | Mac                           |
| ------------------------------- | --------------------------------- | ----------------------------- |
| Go Line Start Smart             | N/A                               | `Cmd` + `Left`                |
| Indent Less                     | `Shift` + `Tab`                   | `Shift` + `Tab`               |
| Delete Line                     | `Shift` + `Ctrl` + `K`            | `Shift` + `Ctrl` + `k`        |
| Wrap Lines                      | `Alt` + `Q`                       | `Option` + `Q`                |
| Transpose Chars                 | `Ctrl` + `T`                      | N/A                           |
| Go Subword Left                 | `Alt` + `Left`                    | `Option` + `Left`             |
| Go Subword Right                | `Alt` + `Right`                   | `Option` + `Right`            |
| Scroll Line Up                  | `Ctrl` + `Up`                     | `Ctrl` + `Option` + `Up`      |
| Scroll Line Down                | `Ctrl` + `Down`                   | `Ctrl` + `Option` + `Down`    |
| Insert Line After               | `Ctrl` + `Enter`                  | `Cmd` + `Enter`               |
| Insert Line Before              | `Shift` + `Ctrl` + `Enter`        | `Shift` + `Cmd` + `Enter`     |
| Select Next Occurrence          | `Ctrl` + `D`                      | `Cmd` + `D`                   |
| Select Scope                    | `Shift` + `Ctrl` + `Space`        | `Shift` + `Cmd` + `Space`     |
| Select Between Brackets         | `Shift` + `Ctrl` + `M`            | `Shift` + `Cmd` + `M`         |
| Go To Bracket                   | `Ctrl` + `M`                      | `Cmd` + `M`                   |
| Swap Line Up                    | `Shift` + `Ctrl` + `Up`           | `Cmd` + `Ctrl` + `Up`         |
| Swap Line Down                  | `Shift` + `Ctrl` + `Down`         | `Cmd` + `Ctrl` + `Down`       |
| Toggle Comment Indented         | `Ctrl` + `/`                      | `Cmd` + `/`                   |
| Join Lines                      | `Ctrl` + `J`                      | `Cmd` + `J`                   |
| Duplicate Line                  | `Shift` + `Ctrl` + `D`            | `Shift` + `Cmd` + `D`         |
| Sort Lines                      | `F9`                              | `Cmd` + `F5`                  |
| Sort Lines Insensitive          | `Ctrl` + `F9`                     | `Cmd` + `F5`                  |
| Smart Backspace                 | `Backspace`                       | `Backspace`                   |
| Skip And Select Next Occurrence | `Ctrl` + `K` `Ctrl` + `D`         | `Cmd` + `K Cmd` + `D`         |
| Del Line Right                  | `Ctrl` + `K` `Ctrl` + `K`         | `Cmd` + `K Cmd` + `K`         |
| Upcase At Cursor                | `Ctrl` + `K` `Ctrl` + `U`         | `Cmd` + `K Cmd` + `U`         |
| Downcase At Cursor              | `Ctrl` + `K` `Ctrl` + `L`         | `Cmd` + `K Cmd` + `L`         |
| Set Sublime Mark                | `Ctrl` + `K` `Ctrl` + `Space`     | `Cmd` + `K Cmd` + `Space`     |
| Select To Sublime Mark          | `Ctrl` + `K` `Ctrl` + `A`         | `Cmd` + `K Cmd` + `A`         |
| Delete To Sublime Mark          | `Ctrl` + `K` `Ctrl` + `W`         | `Cmd` + `K Cmd` + `W`         |
| Swap With Sublime Mark          | `Ctrl` + `K` `Ctrl` + `X`         | `Cmd` + `K Cmd` + `X`         |
| Sublime Yank                    | `Ctrl` + `K` `Ctrl` + `Y`         | `Cmd` + `K Cmd` + `Y`         |
| Show In Center                  | `Ctrl` + `K` `Ctrl` + `C`         | `Cmd` + `K Cmd` + `C`         |
| Clear Bookmarks                 | `Ctrl` + `K` `Ctrl` + `G`         | `Cmd` + `K Cmd` + `G`         |
| Del Line Left                   | `Ctrl` + `K` `Ctrl` + `Backspace` | `Cmd` + `K Cmd` + `Backspace` |
| Fold All                        | `Ctrl` + `K` `Ctrl` + `1`         | `Cmd` + `K Cmd` + `1`         |
| Unfold All                      | `Ctrl` + `K` `Ctrl` + `0`         | `Cmd` + `K Cmd` + `0`         |
| Unfold All                      | `Ctrl` + `K` `Ctrl` + `J`         | `Cmd` + `K Cmd` + `J`         |
| Add Cursor To Prev Line         | `Ctrl` + `Alt` + `Up`             | `Ctrl` + `Shift` + `Up`       |
| Add Cursor To Next Line         | `Ctrl` + `Alt` + `Down`           | `Ctrl` + `Shift` + `Down`     |
| Find Under                      | `Ctrl` + `F3`                     | `Cmd` + `F3`                  |
| Find Under Previous             | `Shift` + `Ctrl` + `F3`           | `Shift` + `Cmd` + `F3`        |
| Find All Under                  | `Alt` + `F3`                      | `Alt` + `F3`                  |
| Fold                            | `Shift` + `Ctrl` + `[`            | `Shift` + `Cmd` + `[`         |
| Unfold                          | `Shift` + `Ctrl` + `]`            | `Shift` + `Cmd` + `]`         |
| Find Incremental                | `Ctrl` + `I`                      | `Cmd` + `I`                   |
| Find Incremental Reverse        | `Shift` + `Ctrl` + `I`            | `Shift` + `Cmd` + `I`         |
| Replace                         | `Ctrl` + `H`                      | `Cmd` + `H`                   |
| Find Next                       | `F3`                              | `F3`                          |
| Find Prev                       | `Shift` + `F3`                    | N/A                           |

In case we missed anything, please source code of [CodeMirror sublime keymap](https://codemirror.net/keymap/sublime.js).

#### Emacs/Vim

Please refer to CodeMirror source code:

- [`keymap/emacs.js`](https://codemirror.net/5/keymap/emacs.js)
- [`keymap/vim.js`](https://codemirror.net/5/keymap/vim.js)

### Table editing mode

Please read: [Appendix: Complete commands](https://hackmd.io/c/tutorials/%2Fs%2Fhow-to-create-table#Appendix-Complete-commands).
