-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Configurable keys 2 (Mapping keys to commands) (#268)
* Add convenience/clarity wrapper for Range initialization * Add keycode parse and display methods * Add remapping functions and tests * Implement key remapping * Add remapping book entry * Use raw string literal for toml * Add command constants * Make command functions private * Map directly to commands * Match key parsing/displaying to Kakoune * Formatting pass * Update documentation * Formatting * Fix example in the book * Refactor into single config file * Formatting * Refactor configuration and add keymap newtype wrappers * Address first batch of PR comments * Replace FromStr with custom deserialize
- Loading branch information
1 parent
47d2e3a
commit f7e00cf
Showing
10 changed files
with
928 additions
and
340 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# Key Remapping | ||
|
||
One-way key remapping is temporarily supported via a simple TOML configuration | ||
file. (More powerful solutions such as rebinding via commands will be | ||
available in the feature). | ||
|
||
To remap keys, write a `config.toml` file in your `helix` configuration | ||
directory (default `~/.config/helix` in Linux systems) with a structure like | ||
this: | ||
|
||
```toml | ||
# At most one section each of 'keys.normal', 'keys.insert' and 'keys.select' | ||
[keys.normal] | ||
a = "move_char_left" # Maps the 'a' key to the move_char_left command | ||
w = "move_line_up" # Maps the 'w' key move_line_up | ||
C-S-esc = "select_line" # Maps Control-Shift-Escape to select_line | ||
|
||
[keys.insert] | ||
A-x = "normal_mode" # Maps Alt-X to enter normal mode | ||
``` | ||
|
||
Control, Shift and Alt modifiers are encoded respectively with the prefixes | ||
`C-`, `S-` and `A-`. Special keys are encoded as follows: | ||
|
||
* Backspace => "backspace" | ||
* Space => "space" | ||
* Return/Enter => "ret" | ||
* < => "lt" | ||
* > => "gt" | ||
* + => "plus" | ||
* - => "minus" | ||
* ; => "semicolon" | ||
* % => "percent" | ||
* Left => "left" | ||
* Right => "right" | ||
* Up => "up" | ||
* Home => "home" | ||
* End => "end" | ||
* Page Up => "pageup" | ||
* Page Down => "pagedown" | ||
* Tab => "tab" | ||
* Back Tab => "backtab" | ||
* Delete => "del" | ||
* Insert => "ins" | ||
* Null => "null" | ||
* Escape => "esc" | ||
|
||
Commands can be found in the source code at `../../helix-term/src/commands.rs` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.