xterm-js readline addon
npm install xterm-readlineThis is an xterm-js addon that provides a readline like capability to xterm-js. It allows the creation of cli or repl like interfaces on top of xterm-js.
Large parts of this source are inspired / derived / ported from the MIT licensed rustyline project.
* Multi-line prompt and input
* Extendable syntax highlighting
* Unicode / multi column-width character support
This is a multi-line example that treats any line ending with '&&' as a continuation.
``typescript
import "xterm/css/xterm.css";
import { Terminal } from 'xterm';
import { Readline } from "xterm-readline";
const term = new Terminal({
theme: {
background: "#191A19",
foreground: "#F5F2E7",
},
cursorBlink: true,
cursorStyle: "block"
});
const rl = new Readline();
term.loadAddon(rl);
term.open(document.getElementById('terminal'));
term.focus();
rl.setCheckHandler((text) => {
let trimmedText = text.trimEnd();
if (trimmedText.endsWith("&&")) {
return false;
}
return true;
});
function readLine() {
rl.read(">")
.then(processLine);
}
function processLine(text) {
rl.println("you entered: " + text);
setTimeout(readLine);
}
readLine();
``
Key | Action
--------- | ------
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
Up | Move cursor up (multi-line edit)
Down | Move cursor down (multi-line edit)
Ctrl-C | Cancel line in progress (additionally call ctrl-c callback if registered)
Ctrl-D, Del | Delete the character under the cursor
Enter | Apply the line, or begin a new line in multiline mode
Alt/Shift Enter | Force add \n to the input
Ctrl-U | Clear line
Ctrl-K | Delete text from cursor to end of line
* Marwood
If you contribute code to this project, you implicitly allow your code to be distributed under the MIT license.