From bc99b61be2812d84f198c31fccbc56e989755574 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Wed, 12 May 2021 20:32:44 +0900 Subject: [PATCH] Update the book (keymaps). --- book/src/install.md | 12 +++-- book/src/keymap.md | 127 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 133 insertions(+), 6 deletions(-) diff --git a/book/src/install.md b/book/src/install.md index 48813bee..a125dd9c 100644 --- a/book/src/install.md +++ b/book/src/install.md @@ -1,6 +1,6 @@ # Installation -TODO: Prebuilt binaries on GitHub Releases page +We provide pre-built binaries on the [GitHub Releases page](https://github.com/helix-editor/helix/releases). ## OSX @@ -26,9 +26,13 @@ TODO: AUR ## Build from source ``` -$ git clone --depth 1 --recurse-submodules -j8 https://github.com/helix-editor/helix -$ cd helix -$ cargo install --path helix-term +git clone --recurse-submodules --shallow-submodules -j8 https://github.com/helix-editor/helix +cd helix +cargo install --path helix-term ``` This will install the `hx` binary to `$HOME/.cargo/bin`. + +Now copy the `runtime/` directory somewhere. Helix will by default look for the +runtime inside the same folder as the executable, but that can be overriden via +the `HELIX_RUNTIME` environment variable. diff --git a/book/src/keymap.md b/book/src/keymap.md index 995b4688..4c7c8306 100644 --- a/book/src/keymap.md +++ b/book/src/keymap.md @@ -1,7 +1,8 @@ # Keymap +## Normal mode -## Movement +### Movement | Key | Description | |-----|-----------| @@ -12,7 +13,129 @@ | w | move next word start | | b | move previous word start | | e | move next word end | +| t | find 'till next char | +| f | find next char | +| T | find 'till previous char | +| F | find previous char | +| 0 | move to the start of the line | +| $ | move to the end of the line | +| m | Jump to matching bracket | +| PageUp | Move page up | +| PageDown | Move page down | +| ctrl-u | Move half page up | +| ctrl-d | Move half page down | +| Tab | Switch to next view | +| ctrl-i | Jump forward on the jumplist TODO: conflicts tab | +| ctrl-o | Jump backward on the jumplist | +| v | Enter select (extend) mode | +| g | Enter goto mode | +| : | Enter command mode | +| z | Enter view mode | +| space | Enter space mode | +| K | Show documentation for the item under the cursor | + +### Changes + +| Key | Description | +|-----|-----------| +| r | replace (single character change) | +| i | Insert before selection | +| a | Insert after selection (append) | +| I | Insert at the start of the line | +| A | Insert at the end of the line | +| o | Open new line below selection | +| o | Open new line above selection | +| u | Undo change | +| U | Redo change | +| y | Yank selection | +| p | Paste after selection | +| P | Paste before selection | +| > | Indent selection | +| < | Unindent selection | +| = | Format selection | +| d | Delete selection | +| c | Change selection (delete and enter insert mode) | + +### Selection manipulation + +| Key | Description | +|-----|-----------| +| s | Select all regex matches inside selections | +| S | Split selection into subselections on regex matches | +| alt-s | Split selection on newlines | +| ; | Collapse selection onto a single cursor | +| alt-; | Flip selection cursor and anchor | +| % | Select entire file | +| x | Select current line | +| X | Extend to next line | +| [ | Expand selection to parent syntax node TODO: pick a key | +| J | join lines inside selection | +| K | keep selections matching the regex TODO: overlapped by hover help | +| space | keep only the primary selection TODO: overlapped by space mode | +| ctrl-c | Comment/uncomment the selections | + +### Search + +> TODO: The search implementation isn't ideal yet -- we don't support searching +in reverse, or searching via smartcase. + +| Key | Description | +|-----|-----------| +| / | Search for regex pattern | +| n | Select next search match | +| N | Add next search match to selection | +| * | Use current selection as the search pattern | + +## Select / extend mode + +I'm still pondering whether to keep this mode or not. It changes movement +commands to extend the existing selection instead of replacing it. + +> NOTE: It's a bit confusing at the moment because extend hasn't been +> implemented for all movement commands yet. + +## View mode + +View mode is intended for scrolling and manipulating the view without changing +the selection. + +| Key | Description | +|-----|-----------| +| z , c | Vertically center the line | +| t | Align the line to the top of the screen | +| b | Align the line to the bottom of the screen | +| m | Align the line to the middle of the screen (horizontally) | +| j | Scroll the view downwards | +| k | Scroll the view upwards | + +## Goto mode + +Jumps to various locations. + +> NOTE: Some of these features are only available with the LSP present. + +| Key | Description | +|-----|-----------| +| g | Go to the start of the file | +| e | Go to the end of the file | +| e | Go to definition | +| t | Go to type definition | +| r | Go to references | +| i | Go to implementation | + +## Object mode + +TODO: Mappings for selecting syntax nodes (a superset of `[`). + +## Space mode + +This layer is a kludge of mappings I had under leader key in neovim. | Key | Description | |-----|-----------| -| a | Append to end of selection | +| f | Open file picker | +| b | Open buffer picker | +| v | Open a new vertical split into the current file | +| w | Save changes to file | +| c | Close the current split | +| space | Keep primary selection TODO: it's here because space mode replaced it |