Orbiton is a text editor and a simple IDE with the following goals in mind:
VT100
)Please submit a PR if anything can be improved to help reach these goals.
Orbiton might be a good fit for:
EDITOR=o git commit
).README.md
and TODO.md
files.EDITOR=o visudo
and has built-in support for neatly formatting /etc/fstab
files.ctrl-g
to see the word count).Screenshot of the VTE GUI application (that can be found in the gtk3
directory), running the o
editor:
Stepping through the assembly instructions of a Rust program by entering debug mode with the ctrl-o
menu and then stepping with ctrl-n
:
Editing a C source file in og
using the "synthwave" theme:
There are also light themes available:
orbiton |
---|
With Go 1.21, the development version of o
can be installed like this:
go install github.com/xyproto/orbiton/v2@latest && mv -i ~/go/bin/orbiton ~/go/bin/o
Adjust the mv
flags and the ~/go/bin
path as needed. Perhaps go install
will have an -o
flag in the future.
Alternatively, download and install a release version. For example, for Raspberry Pi 2, 3 or 4 running Linux:
curl -sL 'https://github.com/xyproto/orbiton/releases/download/v2.68.3/orbiton-2.68.3-linux_armv7_static.tar.xz' | tar JxC /tmp && sudo install -Dm755 /tmp/orbiton-2.68.3-linux_armv7_static/o /usr/bin/o && sudo install -Dm644 /tmp/orbiton-2.68.3-linux_armv7_static/o.1.gz /usr/share/man/man1/o.1.gz
o
as the default editor executable for git
To set:
git config --global core.editor o
To unset:
git config --global --unset core.editor
By setting the MANPAGER
environment variable, it's possible to use o
for viewing man pages:
export MANPAGER=o
An alternative to viewing man pages in o
is to use less
:
export MANPAGER='less -s -M +Gg'
o
on OpenSUSEInstall o
manually, until an OpenSUSE package exists:
git clone https://github.com/xyproto/orbiton
cd orbiton
make && sudo make install
The following is not strictly needed, but it sets everything up to make full use of o
:
Add this to ~/.alias
:
alias o=/usr/bin/o
Add this to ~/.profile
:
export MANPAGER=/usr/bin/o
export EDITOR=/usr/bin/o
Log out and in again to activate the changes.
These features are unique to o
, as far as I am aware:
ctrl-v
once to paste one line, press ctrl-v
again to paste the rest.ctrl-c
once to copy one line, press ctrl-c
again to copy a block of lines (until a blank line).ctrl-r
. When a portal is open, copy lines across files (or within the same file) with ctrl-v
.ctrl-space
and format code with ctrl-w
, for a wide range of programming languages.ctrl-w
or ctrl-r
, when an interactive git rebase session is in progress.ctrl-l
. Either enter a number to jump to a line or just press return
(or t
) to jump to the top. Press ctrl-l
and return
again (or b
) to jump to the bottom. Press c
to jump to the center.ctrl-l
, jumping to a percentage (like 50%
) or a fraction (like 0.5
or .5
) is also possible. It is also possible to jump to one of the highlighted letters.main.
file that does not exist, but main.cpp
and main.o
does exists, then main.cpp
will be opened.ctrl-f
, entering text and pressing return
. Replace by pressing tab
instead of return
, then enter the replacement text and press return
. Searching for unicode runes on the form u+0000
is also supported.iferr
on a single line in a Go or Odin program and press return
to insert a suitable if err != nil { return ... }
block, based on koron/iferr.ctrl-t
when the cursor is on a table. This works best for tables that are not too wide.ctrl-w
.if
, for
and while
when return is pressed.ctrl-f
twice searches for the word under the cursor."Hello, World"
in many popular programming languages simply by pressing ctrl-space
.o main.c
, pressing ctrl-w
and then a double ctrl-space
..png
, .jpg
, .jpeg
, .gif
, .ico
, .bmp
or .webp
images directly in the terminal (using a scaled down version and up to 16 colors).-p
flag followed by a filename can be used for just pasting the clipboard to a new file, instead of editing a file.ctrl-t
can jump between a C++ header and source file, when editing C++ code.ctrl-t
shows the Markdown table editor, when editing Markdown and the cursor is on a Markdown table.vim
and emacs
, for small files.pandoc
.alacritty
, konsole
, st
, urxvt
, xfce4-terminal
, xterm
and zutty
.NO_COLOR
environment variable can be set to disable all colors.ctrl-a
and ctrl-e
may need to be used instead of Home
and End
. And for browsing up and down, ctrl-n
and ctrl-p
may be used.go
or gccgo
./dev/tty
is available.xclip
for X, wl-clipboard
for Wayland or pbcopy
for macOS needs to be installed to access the system clipboard.+
or :
prefix.COMMIT_EDITMSG
, the look and feel will be adjusted for git commit messages.UTF-8
, but some runes may be displayed incorrectly.\n
).\r\n
) to UNIX line endings (just \n
), whenever possible.0xc2 0xa0
) with a regular space (0x20
) whenever possible.0xcc 0x88
) with a regular tilde (~
) whenever possible.0xcd 0xbe
) with a regular semicolon (;
) whenever possible.git rebase -i
, then either ctrl-w
or ctrl-r
will cycle the keywords for the current line (fixup
, drop
, edit
etc).r
(or have a symlink with that name), the default theme will be red/black.l
(or have a symlink with that name), the default theme will be suitable for light backgrounds.s
(or have a symlink with that name), the default theme will be the "synthwave" theme.o filename.md
, press ctrl-space
twice and quit with ctrl-q
.ctrl-space
or ctrl-t
to toggle the check mark in - [ ] TODO item
boxes in Markdown..gz
extension.ctrl-w
.ctrl-f
and then t
to search for a typo, ctrl-n
for next match and then ctrl-a
to add it and ctrl-i
to ignore it).ctrl-l
has been pressed.tmux
and resizing the terminal emulator window may trigger text rendering issues. Try pressing esc
to redraw the text, or ctrl-f
to search for text. Setting TERM
correctly might help.o
is busy performing an operation, pressing ctrl-s
may lock the terminal. Some terminal emulators, like konsole
, can be configured to turn off this behavior. Press ctrl-q
to unlock the terminal again (together with the unfortunate risk of quitting o
). To sidestep this issue, the ctrl-o
menu can be used instead, for saving and quitting.mosh
may cause text rendering issues (in both nvim
and o
).cmd-v
, cmd-x
and cmd-c
on macOS only works when using the og
GUI/VTE frontend. For o
, ctrl-v
, ctrl-x
and ctrl-c
can be used instead.There are pretty few hotkeys to remember:
ctrl-s
- Save.ctrl-q
- Quit.ctrl-r
- Open or close a portal. Text can be pasted from the portal into another (or the same) file with ctrl-v
.
For "git interactive rebase" mode (git rebase -i
), this will cycle the rebase keywords instead.ctrl-a
- Go to start of text, then start of line and then to the previous line.ctrl-e
- Go to end of line and then to the next linectrl-n
- Scroll down 10 lines, or go to the next match if a search is active.
Insert a column when in the Markdown table editor.ctrl-p
- Scroll up 10 lines, or go to the previous match if a search is active.
Remove an empty column when in the Markdown table editor.ctrl-k
- Delete characters to the end of the line, then delete the line.ctrl-_
- Jump to a matching parenthesis or bracket, if the cursor is on one,
otherwise insert a symbol by typing in a 2-letter digraph.ctrl-d
- Delete a single character.ctrl-t
- For C and C++: jump between the current header and source file. For Agda and Ivy, insert a symbol.
For Markdown: toggle checkboxes, or launch the table editor if the cursor is over a table.
For the rest: record and play back keypresses. Press Esc
to clear the current macro.ctrl-o
- Open a command menu with actions that can be performed.ctrl-x
- Cut the current line. Press twice to cut a block of text (to the next blank line).ctrl-c
- Copy one line. Press twice to copy a block of text.ctrl-v
- Paste one trimmed line. Press twice to paste multiple untrimmed lines.ctrl-space
- Build program, render to PDF or export to man page (see table below).
For Markdown: toggle checkboxes, or double press to export to HTML.ctrl-j
- Join lines (or jump to the bookmark, if set).ctrl-u
- Undo (ctrl-z
is also possible, but may background the application).ctrl-l
- Jump to a specific line number or percentage. Press return
to jump to the top. If at the top, press return
to jump to the bottom.
Press one of the highlighted on-screen letters to jump to that location.ctrl-f
- Search for a string. The search wraps around and is case sensitive. Press tab
instead of return
to search and replace.
To find typos, search for the letter t
, then press ctrl-n
for the next word, ctrl-a
to add it or ctrl-i
to ignore it.ctrl-b
- Jump back after jumping to a definition with ctrl-g
.
Toggle a bookmark for the current line, or if set: jump to a bookmark on a different line.ctrl-w
- Format the current file (see the table below), or cycle git rebase keywords. For Markdown, format the table under the cursor.ctrl-g
- Jump to definition, for some programming languages (experimental feature), or toggle the status bar.ctrl-\
- Comment in or out a block of code.ctrl-~
- Jump to a matching parenthesis or bracket.esc
- Redraw everything and clear the last search.ctrl-space
to build or export the current file.ctrl-w
to format the current file, in an opinionated way. If the current file is empty, a "Hello, World!" template will be inserted, for some file extensions.$(o -l)
, to get more details. o -l
can be used to preview the command.Programming language | File extensions | Jump to error | Build command | Format command |
---|---|---|---|---|
Ada | .adb , .gpr , .ads , .ada |
WIP | WIP | WIP |
Agda | .agda |
Yes | agda -c $filename |
N/A |
ALGOL 68 | .a68 |
WIP | a68g --compile $filename |
WIP |
Assembly | .asm , .s , .S , .inc |
Yes | yasm -f elf64 -o $output.o $filename |
N/A |
C | .c , .h |
Yes | gcc $filename -o $output |
clang-format -i --style=WebKit $filename |
C++ | .cpp , .cc , .cxx , .h , .hpp , .h++ , .c++ |
Yes | g++ $filename -o $output |
clang-format -i --style=WebKit $filename |
C# | .cs |
Yes | dotnet build $filename |
astyle --mode=cs $filename |
C3 | .c3 |
Yes | c3c compile -o $output $filename |
c3fmt --rewrite $filename |
Clojure | .clj , .cljs , .clojure |
WIP | lein compile $filename |
WIP |
Crystal | .cr |
Yes | crystal build $filename --release |
crystal tool format $filename |
CSS | .css |
WIP | No | prettier --tab-width 2 -w $filename |
D | .d |
Yes | dmd $filename -of$output |
WIP |
Dart | .dart |
Yes | dart compile exe --output $output $filename |
dart format $filename |
Erlang | .erl |
Yes | erlc $filename |
WIP |
Fortran77, Fortran90 | .f , .f90 |
Yes | gfortran -o $output $filename |
WIP |
Garnet | .gt |
WIP | garnetc -o $output $filename |
WIP |
GLSL | .glsl , .vert , .frag |
WIP | glslangValidator -V -o $output $filename |
WIP |
Go | .go |
Yes | go build $filename |
goimports -w $filename |
Hare | .ha |
Yes | hare build $filename |
N/A |
Haskell | .hs |
Yes | ghc -dynamic $filename |
brittany --write-mode=inplace $filename |
HTML | .html |
WIP | No | tidy -m $filename |
Ivy | .ivy |
WIP | WIP | N/A |
Java | .java |
Yes | javac + jar , see details below |
google-java-format -a -i $filename |
JavaScript | .js |
WIP | No | prettier --tab-width 4 -w $filename |
Jakt | .jakt |
WIP | jakt $filename |
WIP |
Just | justfile , .justfile |
No | No | just --unstable --fmt -f $filename |
Kotlin | .kt , .kts |
Yes | kotlinc $filename -include-runtime -d $output.jar |
ktlint -F $filename |
Kotlin Native | .kt , .kts |
Yes | kotlinc-native -nowarn -opt -Xallocator=mimalloc -produce program -linker-option --as-needed $filename -o $output |
ktlint -F $filename |
Lua | .lua |
Yes | luac -o $output.luac $filename |
lua-format -i --no-keep-simple-function-one-line --column-limit=120 --indent-width=2 --no-use-tab $filename |
Markdown | .md |
WIP | No | prettier --write $filename |
Nim | .nim |
WIP | nim c -o:$output $filename |
WIP |
Objective-C | .m |
Yes | clang $filename -o $output |
clang-format -i --style=WebKit $filename |
Odin | .odin |
Yes | odin build $filename |
N/A |
Objective Pascal | .pas , .pp , .lpr |
Yes | fpc $filename |
WIP |
OCaml | .ml |
WIP | No | ocamlformat $filename |
Perl | .pl |
Yes | perl $filename |
/usr/bin/vendor_perl/perltidy -se -b -i=2 -ole=unix -bt=2 -pt=2 -sbt=2 -ce $filename |
Python | .py |
Yes | python -m py_compile $filename |
black $filename |
Ruby | .rb |
No | No | rubocop -A $filename |
Rust (with Cargo.toml) | .rs |
Yes | cargo build |
rustfmt $filename |
Rust | .rs |
Yes | rustc $filename |
rustfmt $filename |
Scala | .scala |
Yes | scalac $filename && jar cfe $output MainClass *.class |
scalafmt $filename |
Shell | .sh , PKGBUILD , APKBUILD |
WIP | makepkg |
shfmt -s -w -i 2 -bn -ci -sr -kp $filename |
Standard ML | .sml , .fun , .mlb , .cm |
Yes | mlton $filename |
WIP |
Swift | .swift |
WIP | WIP | WIP |
TypeScript | .ts |
WIP | No | prettier --tab-width 4 -w $filename |
V | .v |
Yes | v build $filename |
v fmt $filename |
XML | .xml |
WIP | No | tidy -w 80 -q -i -utf8 --show-errors 0 --show-warnings no --tidy-mark no -xml -m $filename |
Zig | .zig |
Yes | zig build-exe $filename |
zig fmt $filename |
/etc/fstab
, JSON and HTML files are also supported, and can be formatted with ctrl-w
.
o
will try to jump to the location where the error is and otherwise display Success
.ctrl-w
will word wrap the lines to a length of 99.kotlinc-native
is not available, this build command will be used instead: kotlinc $filename -include-runtime -d $name.jar
CXX can be downloaded here: GitHub project page for CXX.
File type | File extensions | Build or export command |
---|---|---|
AsciiDoc | .adoc |
asciidoctor -b manpage (writes to out.1 ) |
scdoc | .scd , .scdoc |
scdoc (writes to out.1 ) |
Markdown | .md |
pandoc -N --toc -V geometry:a4paper (writes to $filename.pdf ) |
This is a brand new feature and needs more testing.
gdb
is installed, it's possible to select "Debug mode" from the ctrl-o
menu and then build and step through a program with ctrl-space
, or set a breakpoint with ctrl-b
and continue with ctrl-space
.While in the Markdown table editor:
tab
can be used to go to the next cell, or insert new cells if the last cell is reached.return
can be used to either jump to the blank cell below or to insert a new row below.backspace
can be used to delete letters, but also for deleting the current row if it is empty.ctrl-n
can be used to insert a new column to the right.ctrl-d
can be used to delete the current column (if all cells in the column are empty).esc
or ctrl-t
can be used to close the Markdown table editor.ctrl-s
can be used to save.Themes can be selected with the ctrl-o
menu. The theme menu also lists the theme names, which can be specified in the O_THEME
environment variable.
The O_THEME
environment variable is an exception to the claim that o
is configuration-free, but it is completely optional.
For using ie. the Synthwave theme, the /usr/bin/sw
symlink to /usr/bin/o
can be used, or this can be added to ~/.profile
:
export O_THEME=synthwave
æ
, just press ctrl-_
and type in ae
. To insert µ
, type in My
.git clone https://github.com/xyproto/orbiton
cd orbiton
make && sudo make install
And optionally:
make gui && sudo make gui-install
It is also possible to install the symlinks that are suggested further down in this document.
Install dependencies (use doas
if needed):
add_pkg git gmake go vte3
Build both the editor o
and the GUI frontend og
:
gmake CXX="clang++ -w" o og
Install both executables, a man page, an icon and a desktop shortcut file (use doas
if needed`):
PREFIX=/usr/local gmake install og-install
Just building and installing o
also works:
gmake
doas gmake install
It is also possible to install the symlinks that are suggested further down in this document.
C++
ctrl-space
, cxx
must be installed.ctrl-w
, clang-format
must be installed.Go
ctrl-space
, The go
compiler must be installed.ctrl-w
, goimports
must be installed.Zig
zig
command is needed.V
v
command is needed.Rust
ctrl-space
, Cargo.toml
must exist and cargo
must be installed.ctrl-w
, rustfmt
must be installed.Haskell
ctrl-space
, the ghc
compiler must be installed.ctrl-w
, brittany
must be installed.Python
ctrl-space
only checks the syntax, without executing. This only requires python
to be available.ctrl-w
, black
must be installed.Crystal
crystal
command is needed.Kotlin
ctrl-space
, kotlinc
must be installed. A .jar
file is created if the compilation succeeded.ctrl-w
, ktlint
must be installed.Java
ctrl-space
, javac
and jar
must be installed. A .jar
file is created if the compilation succeeded.ctrl-w
, google-java-format
must be installed.Scala
ctrl-space
, scalac
and jar
must be installed. A .jar
file is created if the compilation succeeded.java -jar main.jar
. Use scalac -d main.jar MyFile.scala
if you want to produce a jar that can be executed with scala main.jar
.ctrl-w
, scalafmt
must be installed.D
ctrl-space
, gdc
must be available.JSON
fstab
fstab
files (usually /etc/fstab
) is a built-in feature. Just press ctrl-w
. If you need a standalone utility, fstabfmt
is available.JavaScript
prettier
must be installed.Since kotlinc $filename -include-runtime -d
builds to a .jar
, I though I should do the same for Java. The idea is to easily compile a single or a small collection of .java
files, where one of the files has a main
function.
If you know about an easier way to build a .jar
file from *.java
, without using something like gradle, please let me know by submitting a pull request. This is pretty verbose...
javaFiles=$(find . -type f -name '*.java')
for f in $javaFiles; do
grep -q 'static void main' "$f" && mainJavaFile="$f"
done
className=$(grep -oP '(?<=class )[A-Z]+[a-z,A-Z,0-9]*' "$mainJavaFile" | head -1)
packageName=$(grep -oP '(?<=package )[a-z,A-Z,0-9,.]*' "$mainJavaFile" | head -1)
if [[ $packageName != "" ]]; then
packageName="$packageName."
fi
mkdir -p _o_build/META-INF
javac -d _o_build $javaFiles
cd _o_build
echo "Main-Class: $packageName$className" > META-INF/MANIFEST.MF
classFiles=$(find . -type f -name '*.class')
jar cmf META-INF/MANIFEST.MF ../main.jar $classFiles
cd ..
rm -rf _o_build
For Scala, this is the code that is used to produce a main.jar
file that can be run directly with java -jar main.jar
:
#!/bin/sh
scalaFiles=$(find . -type f -name '*.scala')
for f in $scalaFiles; do
grep -q 'def main' "$f" && mainScalaFile="$f"
grep -q ' extends App ' "$f" && mainScalaFile="$f"
done
objectName=$(grep -oP '(?<=object )[A-Z]+[a-z,A-Z,0-9]*' "$mainScalaFile" | head -1);
packageName=$(grep -oP '(?<=package )[a-z,A-Z,0-9,.]*' "$mainScalaFile" | head -1);
if [[ $packageName != "" ]]; then
packageName="$packageName."
fi
mkdir -p _o_build/META-INF
scalac -d _o_build $scalaFiles
cd _o_build
echo -e "Main-Class: $packageName$objectName\nClass-Path: /usr/share/scala/lib/scala-library.jar" > META-INF/MANIFEST.MF
classFiles=$(find . -type f -name '*.class')
jar cmf META-INF/MANIFEST.MF ../main.jar $classFiles
cd ..
rm -rf _o_build
/usr/share/scala/lib/scala-library.jar
is not found scalac -d run_with_scala.jar
is used instead.scala-library.jar
was not found, then the resulting jar
file will need scala
to run.ctrl-t
brings up a menu with a selection of special symbols.
There are also these shortcuts:
⊤
by pressing ctrl-t
and then t
.ℕ
by pressing ctrl-t
and then n
.When editing PKGBUILD
files, it is possible to press ctrl-o
and select Call Guessica
to update the pkgver=
and source=
fields, by a combination of guesswork and online searching. This functionality depends on the Guessica package update utility being installed, and will only work for some PKGBUILD
files.
a68g
- for compiling ALGOL 68 codeagda
- for compiling Agda codeasciidoctor
- for writing man pagesastyle
- for formatting C# codeblack
- for formatting Python codebrittany
- for formatting Haskell codecargo
- for compiling Rustclang
- for formatting C++ code with clang-format
clojure
- for compiling Clojurecrystal
- for compiling Crystalcxx
- for compiling C++fpc
- for compiling Object Pascalg++
- for compiling C++ codegdc
- for compiling D codeghc
- for compiling Haskell codego
- for compiling Go codego-tools
- for formatting Go code and handling imports with goimports
google-java-format
- for formatting Java codejad
- decompile .class
files on the fly when opening them with o
java-environment
- for compiling Java code and creating .jar
files with javac
and jar
kotlin
- for compiling Kotlinktlint
- for formatting Kotlin codelua
- for compiling Lua to bytecodelua-format
- for formatting Lua codemlton
- for compiling Standard MLmono
- for compiling C# codeocaml
- for compiling and formatting OCaml codeodin
- for compiling Odinpandoc
- for exporting Markdown to PDFprettier
- for formatting JavaScript, TypeScript and CSSpython
- for compiling Python to bytecoderustc
- for compiling Rustrustfmt
- for formatting Rustscala
- for compiling Scalasdoc
- for writing man pagestidy
- for formatting XMLv
- for compiling and formatting V codezig
- for compiling and formatting Zig codeo
executable is 1.5M when built with GCC 12 (for 64-bit Linux) and compressed with upx
.One way of building with gccgo
and upx
(in the v2
directory):
go build -mod=vendor -gccgoflags '-Os -s' -o o && upx --best --lzma o
If the o
executable is built with go
instead, the size can be 8.7M, or just 2.8M when packed with upx
:
go build -mod=vendor -ldflags='-s -w' -trimpath -o o && upx --best --lzma o
These four ways of opening file.txt
at line 7
are supported:
o file.txt 7
o file.txt +7
o file.txt:7
o file.txt+7
This also means that filenames containing +
or :
, and then followed by a number, are not supported.
-f
can be used to open a file, regardless of if there are any locks. It can also be used for overwriting files together with -p
.-c FILENAME
can be used to copy the contents of the given file to the clipboard and then exit.-p FILENAME
can be used to paste the contents of the clipboard to the given FILENAME
(if it does not already exist) and then exit.-n
can be used to avoid writing lockfiles, build files, location history, search history and the game highscore to $XDG_CACHE_DIR/cache/o
or ~/.cache/o
. Not recommended.-m
can be used to open a file as read-only, but monitor it for changes.--help
can be used to get a quick overview of the supported keybindings.--version
will print the current version and then exit.When loading files that are large or from a slow disk, an animated spinner will appear. The loading operation can be interrupted by pressing esc
, q
or ctrl-q
.
This shell function works in zsh
and bash
and may be useful for both searching for and opening a file at the given line number (works best if there is only one matching file, if not it will open several files in succession):
fo() { find . -type f -wholename "*$1" -exec o {} $2 \;; }
If too many files are found, it is possible to stop opening them by selecting Stop parent and quit without saving
from the ctrl-o
menu, which will quit the editor and also kill the parent find
process.
Example use:
fo somefile.cpp 123
When using pandoc
to export from Markdown to PDF:
PAPERSIZE
environment variable is set to ie. a4
or letter
, it will be respected when exporting from Markdown to PDF using pandoc, at the press of ctrl-space
.--pdf-engine=xelatex
and --listings
flags are used, so xelatex
and the listings
package needs to be available. A standard installation of LaTeX and Pandoc should provide both.Render to PDF with pandoc
will only appear on the ctrl-o
menu when editing a Markdown file and pandoc
is installed.ctrl-o
menu to start a silly little game about feeding creatures with pellets before they are eaten. Alternatively, create a symlink for starting it directly, ie.: ln -sf /usr/bin/o /usr/bin/feedgame
.right, down, left
or left, down, right
in rapid succession followed by either down
to save or up
to save and quit. The only purpose of this unusual shortcut is to help avoid the painful Emacs pinky.o
- for terminal emulators that supports at least VT100og
- for the VTE GUI (optional)# For starting o with the Light theme
ln -sf /usr/bin/o /usr/bin/li
# For starting o with the Red/Black theme
ln -sf /usr/bin/o /usr/bin/redblack
# For starting o with the Synthwave theme
ln -sf /usr/bin/o /usr/bin/sw
# For starting o with the Blue Edit theme
ln -sf /usr/bin/o /usr/bin/edi
# For starting o with the Light VS theme
ln -sf /usr/bin/o /usr/bin/vs
# For starting the GUI version of o with the Light theme
ln -sf /usr/bin/og /usr/bin/lig
# For starting the GUI version of o with the Red/Black theme
ln -sf /usr/bin/og /usr/bin/redblackg
# For starting the GUI version of o with the Synthwave theme
ln -sf /usr/bin/og /usr/bin/swg
# For starting the GUI version of o with the Blue Edit theme
ln -sf /usr/bin/og /usr/bin/edg
# For starting the GUI version of o with the Light VS theme
ln -sf /usr/bin/og /usr/bin/vg
og
Build:
make gui
Install (use sudo
or doas
, if needed):
make gui-install
ctrl-f
to search, and then type in t
and press return to search for the next typo.ctrl-a
to (temporarily) add it to the dictionary or ctrl-i
to (temporarily) ignore it.o
is launched by a symlink or executable named nan
or nano
), ctrl-t
searches for the next typo.The built-in spellchecker uses a list of words from this project that is licensed under this MIT license:
MIT License, Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Flow control
option in the profile settings, to ensure that ctrl-s
will never freeze the terminal.