Rho is a small, very powerful console-based POSIX text editor and mini-IDE with Bash/Emacs key bindings. A configuration file allows the user to create macros using not only any internal function but anything available to a shell command. Keyboard macros (Ctl-Alt-A through Z) can be sourced into the editor for each kind of task, the next sourcing overwriting the last. Rho also allows an unlimited number of templates (sh, awk, python, etc.) to be injected into executable buffers which trap stdout and stderr.
| Tags | text editor configurability Console |
|---|---|
| Licenses | Creative Commons NonCommercial ShareAlike 3.0 |
| Operating Systems | POSIX |
| Implementation | C |
| Translations | English French Dutch Spanish German Japanese |
Recent releases


Release Notes: This release is a port to OS X. The port has been provided by a contributor. For POSIX users, rho is unchanged. See the README in the distribution for ported compilation instructions.


Release Notes: In rho.docmdline, the ability to open a non-existent file was restored so that you can use "rho newfile" instead of "rho" and then "^X^W newfile". A call was added to remove any dangling tempfiles. A few more unused variables were removed. The command for relocation of the cursor line (^U n ^L) was documented.


Release Notes: The envar fillcol has been restored so that the word-wrap column can be set at runtime. Also, list-buffers works in multiple windows now, and the buffer list can be paged up and down.


Release Notes: The on-line help has been brought up to date with the editor's current functionality. The Macros section has been reworked so that all legacy elements have either been removed or are noted as no longer present in the cases where the examples are still useful.


Release Notes: Buffer.purge_sbuffers was added to purge all sourced buffers. Sourcing a file of macros and key bindings now frees all prior sourced macros and clears the key bindings. Bind.unbind_key was fixed so that it properly determined whether a key was in use. This fixed certain bind_to_key calls. Bind.new_binding was also fixed, even though it worked fine in what should have been a broken state. Bind.clear_sbinding was added in order to clear the key bindings of unsourced buffers.