Æsh is a Java library for handling console input with the goal to support most GNU Readline features.
- Line editing
- History (search, persistence)
- Completion
- Masking
- Undo and Redo
- Paste buffer
- Emacs and Vi editing mode
- Supports POSIX OS's and Windows
- Easy to configure (history file & buffer size, edit mode, streams, possible to override terminal impls, etc)
- Support standard out and standard error
- Redirect
- Alias
- Pipeline
- Æsh uses Gradle (http://gradle.org) as its build tool.
import java.io.IOException; import org.jboss.aesh.console.Console; import org.jboss.aesh.console.ConsoleCallback; import org.jboss.aesh.console.ConsoleOutput; import org.jboss.aesh.console.Prompt; import org.jboss.aesh.console.settings.SettingsBuilder; public class Example2 { public static void main(String[] args) throws IOException { final Console console = new Console(new SettingsBuilder().create()); console.setPrompt(new Prompt("[aesh]$ ")); console.setConsoleCallback( new ConsoleCallback() { @Override public int readConsoleOutput(ConsoleOutput output) throws IOException{ console.pushToStdOut("======>\"" + output.getBuffer() + "\"\n"); if(output.getBuffer().equals("quit")) console.stop(); return 0; } }); console.start(); } }
Note: C equals Control and M is Meta/Alt
- Move back one char : C-b or left arrow
- Move forward one char : C-f or right arrow
- Delete the character left of cursor : backspace
- Delete the character on cursor : C-d
- Undo : C-_ or C-x C-u
- Move to the start of the line : C-a or home
- Move to the end of the line : C-e or end
- Move forward a word, where a word is composed of letters and digits : M-f
- Move backward a word : M-b
- Previous line : up arrow
- Next line : down arrow
- Clear the screen, reprinting the current line at the top : C-l
- Delete next word to the right of cursor : M-d
- Complete : tab
- Kill the text from the current cursor position to the end of the line : C-k
- Kill from the cursor to the end of the current word, or, if between words, to the end of the next word : M-d
- Kill from the cursor to the previous whitespace : C-w
- Yank the most recently killed text back into the buffer at the cursor : C-y
- Search backward in the history for a particular string : C-r
- Search forward in the history for a particular string : C-s
- Switch to VI editing mode: M-C-j
In command mode: About every vi command is supported, here's a few:
- Move back one char : h
- Move forward one char : l
- Delete the character left of cursor : X
- Delete the character on cursor : x
- Undo : u
- Move to the start of the line : 0
- Move to the end of the line : $
- Move forward a word, where a word is composed of letters and digits : w
- Move backward a word : b
- Previous line : k
- Next line : n
- Clear the screen, reprinting the current line at the top : C-l
- Delete next word to the right of cursor : dw
- Kill the text from the current cursor position to the end of the line : D and d$
- Kill from the cursor to the end of the current word, or, if between words, to the end of the next word : db
- Kill from the cursor to the previous whitespace : dB
- Yank the most recently killed text back into the buffer at the cursor : p (after cursor), P (before cursor)
- Add text into yank buffer : y + movement action
- Enable change mode : c
- Repeat previous action : .
- +++ (read a vi manual)
In edit mode:
- Search backward in the history for a particular string : C-r
- Search forward in the history for a particular string : C-s
- Delete the character left of cursor : backspace
- aesh.terminal : specify Terminal object
- aesh.editmode : specify either VI or EMACS edit mode
- aesh.readinputrc : specify if æsh should read settings from inputrc
- aesh.inputrc : specify the inputrc file (must exist)
- aesh.historyfile : specify the history file (must exist)
- aesh.historypersistent : specify if jreadlin should persist history file on exit
- aesh.historydisabled : specify if history should be disabled
- aesh.historysize : speficy the maximum size of the history file
- aesh.logging : specify if logging should be enabled
- aesh.logfile : specify the log file
- aesh.disablecompletion : specify if completion should be disabled