浏览代码

Add keybinding for inserting newlines, closes #83

David Peter 2 年之前
父节点
当前提交
9ce83dc228
共有 4 个文件被更改,包括 29 次插入2 次删除
  1. 7 0
      book/README.md
  2. 1 1
      book/src/SUMMARY.md
  3. 16 0
      book/src/cli-usage.md
  4. 5 1
      numbat-cli/src/main.rs

+ 7 - 0
book/README.md

@@ -0,0 +1,7 @@
+# Development
+
+Call
+
+```bash
+mdbook serve -o
+```

+ 1 - 1
book/src/SUMMARY.md

@@ -28,7 +28,7 @@
 # Command line tool
 # Command line tool
 
 
 - [Installation]()
 - [Installation]()
-- [Usage]()
+- [Usage](./cli-usage.md)
 
 
 # Web version
 # Web version
 
 

+ 16 - 0
book/src/cli-usage.md

@@ -0,0 +1,16 @@
+# Usage
+
+## Key bindings
+
+| Key sequence | Action |
+|--------------|--------|
+| `Tab`, `Ctrl`-`I` | Auto-completion |
+| `Ctrl`-`D` | Quit |
+| `Ctrl`-`L` | Clear screen |
+| `Up`, `Down` | Browse command history |
+| `Ctrl`-`R` | Search command history |
+| `Ctrl`-`C` | Clear the current line |
+| `Alt`-`Enter` | Insert newline |
+| `Home`, `Ctrl`-`A` | Move cursor to the beginning of the line |
+| `End`, `Ctrl`-`E` | Move cursor to the end of the line |
+| `Ctrl`-`W` | Delete word leading up to cursor |

+ 5 - 1
numbat-cli/src/main.rs

@@ -13,7 +13,6 @@ use clap::Parser;
 use colored::Colorize;
 use colored::Colorize;
 use rustyline::completion::extract_word;
 use rustyline::completion::extract_word;
 use rustyline::config::Configurer;
 use rustyline::config::Configurer;
-use rustyline::Highlighter;
 use rustyline::{
 use rustyline::{
     self,
     self,
     completion::{Completer, Pair},
     completion::{Completer, Pair},
@@ -21,6 +20,7 @@ use rustyline::{
     history::DefaultHistory,
     history::DefaultHistory,
     Completer, Editor, Helper, Hinter, Validator,
     Completer, Editor, Helper, Hinter, Validator,
 };
 };
+use rustyline::{EventHandler, Highlighter, KeyCode, KeyEvent, Modifiers};
 
 
 type ControlFlow = std::ops::ControlFlow<numbat::ExitStatus>;
 type ControlFlow = std::ops::ControlFlow<numbat::ExitStatus>;
 
 
@@ -242,6 +242,10 @@ impl Cli {
         rl.set_helper(Some(NumbatHelper {
         rl.set_helper(Some(NumbatHelper {
             completer: NumbatCompleter {},
             completer: NumbatCompleter {},
         }));
         }));
+        rl.bind_sequence(
+            KeyEvent(KeyCode::Enter, Modifiers::ALT),
+            EventHandler::Simple(rustyline::Cmd::Newline),
+        );
         rl.load_history(&history_path).ok();
         rl.load_history(&history_path).ok();
 
 
         let result = self.repl_loop(&mut rl);
         let result = self.repl_loop(&mut rl);