From 5539931018ecc0f6374935543455fe2f5377f5c3 Mon Sep 17 00:00:00 2001
From: gwenn <gtreguier@gmail.com>
Date: Sat, 8 Apr 2017 20:09:35 +0200
Subject: [PATCH] Update README

---
 README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 72 insertions(+), 8 deletions(-)

diff --git a/README.md b/README.md
index 1856588d..f031d1b1 100644
--- a/README.md
+++ b/README.md
@@ -83,27 +83,40 @@ rustyline = "1.0.0"
 
 ## Actions
 
+For all modes:
+
 Keystroke    | Action
 ---------    | ------
-Ctrl-A, Home | Move cursor to the beginning of line
-Ctrl-B, Left | Move cursor one character left
+Home         | Move cursor to the beginning of line
+End          | Move cursor to end of line
+Left         | Move cursor one character left
+Right        | Move cursor one character right
 Ctrl-C       | Interrupt/Cancel edition
 Ctrl-D, Del  | (if line is *not* empty) Delete character under cursor
 Ctrl-D       | (if line *is* empty) End of File
+Ctrl-J, Ctrl-M, Enter | Finish the line entry
+Ctrl-R       | Reverse Search history (Ctrl-S forward, Ctrl-G cancel)
+Ctrl-T       | Transpose previous character with current character
+Ctrl-U       | Delete from start of line to cursor
+Ctrl-V       | Insert any special character without perfoming its associated action (#65)
+Ctrl-W       | Delete word leading up to cursor (using white space as a word boundary)
+Ctrl-Y       | Paste from Yank buffer
+Ctrl-Z       | Suspend (unix only)
+
+### Emacs mode (default mode)
+
+Keystroke    | Action
+---------    | ------
+Ctrl-A, Home | Move cursor to the beginning of line
+Ctrl-B, Left | Move cursor one character left
 Ctrl-E, End  | Move cursor to end of line
 Ctrl-F, Right| Move cursor one character right
 Ctrl-H, BackSpace | Delete character before cursor
 Ctrl-I, Tab  | Next completion
-Ctrl-J, Ctrl-M, Enter | Finish the line entry
 Ctrl-K       | Delete from cursor to end of line
 Ctrl-L       | Clear screen
 Ctrl-N, Down | Next match from history
 Ctrl-P, Up   | Previous match from history
-Ctrl-R       | Reverse Search history (Ctrl-S forward, Ctrl-G cancel)
-Ctrl-T       | Transpose previous character with current character
-Ctrl-U       | Delete from start of line to cursor
-Ctrl-V       | Insert any special character without perfoming its associated action
-Ctrl-W       | Delete word leading up to cursor (using white space as a word boundary)
 Ctrl-Y       | Paste from Yank buffer (Meta-Y to paste next yank instead)
 Meta-<       | Move to first entry in history
 Meta->       | Move to last entry in history
@@ -116,9 +129,60 @@ Meta-T       | Transpose words
 Meta-U       | Upper-case the next word
 Meta-Y       | See Ctrl-Y
 Meta-BackSpace | Kill from the start of the current word, or, if between words, to the start of the previous word
+Meta-0, 1, ..., - | Specify the digit to the argument. `–` starts a negative argument.
 
 [Readline Emacs Editing Mode Cheat Sheet](http://www.catonmat.net/download/readline-emacs-editing-mode-cheat-sheet.pdf)
 
+### Vi command mode
+
+Keystroke    | Action
+---------    | ------
+$, End       | Move cursor to end of line
+.            | Redo the last text modification
+;            | Redo the last character finding command
+,            | Redo the last character finding command in opposite direction
+0, Home      | Move cursor to the beginning of line
+^            | Move to the first non-blank character of line
+a            | Insert after cursor
+A            | Insert at the end of line
+b            | Move one word or token left
+B            | Move one non-blank word left
+c<movement>  | Change text of a movement command
+C            | Change text to the end of line (equivalent to c$)
+d<movement>  | Delete text of a movement command
+D, Ctrl-K    | Delete to the end of the line
+e            | Move to the end of the current word
+E            | Move to the end of the current non-blank word
+f<char>      | Move right to the next occurance of `char`
+F<char>      | Move left to the previous occurance of `char`
+h, Ctrl-H, BackSpace | Move one character left
+l, Space     | Move one character right
+Ctrl-L       | Clear screen
+i            | Insert before cursor
+I            | Insert at the beginning of line
++, j, Ctrl-N | Move forward one command in history
+-, k, Ctrl-P | Move backward one command in history
+p            | Insert the yanked text at the cursor (paste)
+P            | Insert the yanked text before the cursor
+r            | Replaces a single character under the cursor (without leaving command mode)
+s            | Delete a single character under the cursor and enter input mode
+S            | Change current line (equivalent to 0c$)
+t<char>      | Move right to the next occurance of `char`, then one char backward
+T<char>      | Move left to the previous occurance of `char`, then one char forward
+w            | Move one word or token right
+W            | Move one non-blank word right
+x            | Delete a single character under the cursor
+X            | Delete a character before the cursor
+y<movement>  | Yank a movement into buffer (copy)
+
+### Vi insert mode
+
+Keystroke    | Action
+---------    | ------
+Ctrl-H, BackSpace | Delete character before cursor
+Ctrl-I, Tab  | Next completion
+Esc          | Switch to command mode
+
 [Readline VI Editing Mode Cheat Sheet](http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.pdf)
 
 [Terminal codes (ANSI/VT100)](http://wiki.bash-hackers.org/scripting/terminalcodes)
-- 
GitLab