o 2.65.12

o is a text editor that is limited to the VT100 standard. It has general syntax highlighting and launches instantly. It might be a good fit for: - Editing git commit messages (using EDITOR=o git commit). - Editing Markdown, and exporting to PDF. - Learning "up and coming" programming languages, like Zig or Rust. - Editing files deep within larger Go or C++ projects. - Solving Advent of Code tasks. - Writing and maintaining to-do lists and project documentation in Markdown.

Tags text-editor editor
License BSDL
State stable

Recent Releases

2.65.1218 Jun 2024 03:15 minor feature: lt;h2 gt;New features lt;/h2 gt;. lt;ul gt;. lt;li gt;Copy to the clipboard if the executable starts with lt;code gt;c lt;/code gt;. For example, if lt;code gt;/usr/local/bin/copyfile lt;/code gt; is a symlink to lt;code gt;/usr/local/bin/o lt;/code gt;, then lt;code gt;copyfile somefile.txt lt;/code gt; will copy that file into the clipboard. lt;/li gt;. lt;li gt;Paste the clipboard into a file if the executable starts with lt;code gt;p lt;/code gt;. For example, if lt;code gt;/usr/local/bin/pastefile lt;/code gt; is a symlink to lt;code gt;/usr/local/bin/o lt;/code gt;, then lt;code gt;pastefile somefile.txt lt;/code gt; will paste the contents of the clipboard into that file. lt;code gt;pastefile -f lt;/code gt; can be used if the file already exists and should be overwritten. lt;/li gt;. lt;/ul gt;. lt;h2 gt; lt;/h2 gt;. lt;ul gt;. lt;li gt;an that could happen if the terminal was resized, while signals were sent, and while the user was hammering the lt;code gt;Esc lt;/code gt; button. lt;/li gt;. lt;/ul gt;. lt;h2 gt;Improvements lt;/h2 gt;. lt;ul gt;. lt;li gt;Adjust the placement of a menu item in the lt;code gt;ctrl-o lt;/code gt; menu, when editing HTML or XML. lt;/li gt;. lt;li gt;Move the cursor to the start of the first line when sorting a block of lines. lt;/li gt;. lt;li gt;Do not try to expand XML and HTML tags by default. This can be enabled in the lt;code gt;ctrl-o lt;/code gt; menu. lt;/li gt;. lt;li gt;Skip the status message if lt;code gt;SIGTERM lt;/code gt; is received. lt;/li gt;. lt;li gt;Better syntax highlighting when editing Dockerfiles. lt;/li gt;. lt;li gt;Temporarily remove the HTML formatting feature since it could not handle JS within HTML and was annoying. lt;/li gt;. lt;li gt;Modify how lt;code gt;ctrl-a lt;/code gt; and lt;code gt;ctrl-e lt;/code gt; behaves if a macro is being replayed. lt;/li gt;. lt;/ul gt;. lt;h2 gt;Various lt;/h2 gt;. lt;ul gt;. lt;li gt;Build the release binaries with Go 1.22.4. lt;/li gt;. lt;
2.65.1122 Mar 2024 07:27 minor feature: Fix an issue with a mutex when redrawing, in connection with signals and ctrl-c. Make ctrl-k a bit faster, when removing lines or deleting to the end of the current line. Add initial support for CSS. Update dependencies. Update documentation.
2.44.101 Oct 2021 21:25 minor feature: Update the light and dark color theme for the GUI application ko. Improve syntax highlighting for Go. Update man page content detection and syntax highlighting. Also respect the NO_COLOR environment variable when displaying the menu within o. Add a menu option for inserting the current date. Highlight accelerator keys in the menu. Let ctrl-f followed by just f go to the top of the current function. a typo in the documentation. Update dependencies.
2.44.025 Sep 2021 16:25 minor feature: Initial support for Bazel, D, Clojure and Go-style Assembly. Performance improvements. Auto-add parentheses to if/while/for/when etc statements, for C-like languages that require parenthesis around expressions, when return is pressed. Improve syntax highlighting for Python and Go. Make copy/paste portals also work correctly within the same file, above the portal location. Add "Hello, World!" templates for Crystal, Object Pascal, Rust, V, Haskell, TypeScript, JavaScript, Nim, Clojure, Java, Kotlin and C#. For empty files, these are inserted by pressing ctrl-w. Improve the Go compilation status messages. Don't save automatically before pasting with wl-paste. Make the man page syntax highlighting simpler. Update dependencies. Update the documentation. Slightly larger default font. Add a light theme for when the executable starts with l (this theme is subject to change). Respect the O_FONT environment variable for changing the font. Also support GCC
2.43.125 Aug 2021 21:05 minor feature: Syntax highlighting for Python docstrings. Repeated code formatting with ctrl+w. Initial support for Amber templates. Update documentation.
2.43.021 Aug 2021 07:25 minor feature: Add font scaling with ctrl-+, ctrl-numpad +, ctrl-- and ctrl-numpad -. Rename the GUI interface to ko, for easy typing. (Also, it's a word used in the game of Go, and o is written in Go). Compile the release binaries with Go 1.17.
2.42.017 Aug 2021 16:25 minor feature: Improve text rendering performance by profiling o and updating vt100. an off-by-one canvas drawing that became apparent when vt100 was updated. Add a stack trace to the error message output. Follow the advice of the golint utility. Use the red/black/gray theme if the o executable name starts with r. Adjust the syntax highlighting for Go. Let the GUI interface also handle and respond to: Page Up, Page Down, Home, End, Insert, Delete, Shift+Delete, Ctrl+Insert, Shift+Insert, F1, F2, F3, F4, F10 and F12. Minor changes to the desktop shortcut for the GUI interface. Better default font logic in the GUI interface. Update documentation. Update dependencies.
2.41.313 Aug 2021 06:05 minor feature: Let SIGUSR1 unlock locked files. Change the wrap behavior so that long lines are not wrapped by default when typing, for some file types. Update the documentation. Show the file chooser dialog if no filename is given. More graceful exits with regard to file locking. Improve the VTE color scheme. Add new icons for the desktop shortcut.
2.41.109 Aug 2021 14:45 minor feature: Limit how much memory the undo buffers can use before starting to re-use undo buffers. the man page detector. Some unusual Markdown files were mistaken for man pages. Refactor code that related to themes. Minor changes to the desktop shortcut.
2.41.005 Aug 2021 07:45 minor feature: Minor improvements to the man page syntax highlighting. Respect the XDG_CACHE_HOME environment variable. Add a GUI application written in C++ that launches o, using libvte. Update documentation.
2.39.229 Jun 2021 06:45 minor feature: Improve syntax highlighting, tab completion and default settings for Clojure. Improve syntax highlighting and tab completion for Odin. Add a template feature: insert "Hello, World" for empty Go, C, C++, Odin, Scala, Clojure, PKGBUILD, Python and Zig files when ctrl-w is pressed. an where the "jump to error" feature would jump to the line above the error, when ctrl-space was pressed. an with bookmarks, so that they are not moved when lines above are deleted. Improve the spinner animation. Refactor some of the code. Update dependencies. Update documentation.
2.38.105 Jun 2021 15:25 minor feature: a minor where the loading/saving spinner would not be stopped if there was an error loading/saving the file. Enable Tab completion after. Adjust keywords used to highlight Go code. Use string replacers (strings.NewReplacer) for a slight increase in performance. Slight performance improvement of the syntax highlighter. Adjust the default indentation for Odin.
2.37.327 May 2021 14:45 minor feature: an where the text was not colored red if the file was read-only. an where / and */ in comments in shell scripts would syntax highlight the line with the wrong colors. Never lock files named COMMIT_EDITMSG. If o is launched as ro the red/black theme is also used, because a symlink to o named red may conflict with the ed editor. Update dependencies. Update documentation.
2.37.216 May 2021 08:05 minor feature: Improve C and C++ syntax highlighting. Show a spinner also for file saving operations that takes a certain amount of time (not only file loading operations). If o is on a slow disk (measured when loading the file), don't lookup the last line location in the ViM and NeoVim configs. Update documentation. Update dependencies. Some refactoring.
2.37.112 May 2021 06:25 minor feature: The return key behavior at the end of a full screen of text in a new file. Rainbow parenthesis coloring for lines that contains a # as part of a string. Let the rainbow parenthesis feature also include square brackets ( and ). Improve the C# syntax highlighting.
2.37.007 May 2021 03:15 minor feature: Add support for C#. Add support for the Battlestar programming language. Update documentation. Update dependencies.
2.36.128 Apr 2021 03:15 minor feature: Improve syntax highlighting of / */ comments in the middle of a line. Bring back support for Go 1.11. (1.16 is recommended, though). Improved XML-detection. an with parsing single-line comment markers. Improve shell script syntax highlighting support. Syntax highlight pointer arrows in C and C++ (- ). Some refactoring. Update dependencies.
2.36.009 Apr 2021 09:25 minor feature: Autocompletion of programming language keywords when pressing Tab. an where 033 7l would be used instead of 033 ?7l for disabling line wrap. Thanks to Tom Szilagyi for the help with this!. Support for formatting /etc/fstab files with the help of fstabfmt. Initial support for Scala. Minor changes to the Go syntax highlighting. Immediately save the file if SIGTERM is received. Recognize that files saved to /usr/bin should normally be executable. Improve the JSON detection. Show the current file mode when pressing ctrl-g. an where lines containing - in C++ would make most of the line appear in gray. Minor changes to the --help output. Update dependencies.
2.35.125 Feb 2021 03:15 minor feature: an where ctrl-s would move the cursor in a non-obvious way and cause problems when inserting text at the end of long lines. Improve the Markdown to PDF export, using pandoc. Respect the PAPERSIZE environment variable. Draw the correct theme immediately when o starts. Don't blink. Use the red/black theme by default if the shell path starts with /usr/local/bin (BSD-likes). Use the default theme if the executable name is default. Add csh shell script detection. Add initial Nroff support, for writing man pages. View Jupyter Notebook files (.ipynb) as JSON. Add support for.te files (SELinux policy files). Initial support for the Odin programming language. Minor improvements for building Zig sources. Format XML and HTML by pressing ctrl-w, with the help of the tidy utility. Improve the syntax highlighting for regular text files. Add syntax highlighting of comments for HTML and XML. Minor improvements to the Go, Kotlin and Shell syntax highlighting. Switch the CI configuration from Travis CI to GitHub workflows. Save the last used command to /.cache/o/last_command.sh. Improve the help output and the error message if no filename is given. Compile with Go 1.16. Update documentation. Update dependencies.
2.35.009 Jan 2021 03:15 minor feature: Make it easy to preview HTML files at the press of ctrl-space by using xdg-open. Support for column numbers as a third argument when launching o. an where the cursor was hidden when moving left on a long line, after having scrolled to the right. return key behavior for long lines. backspace key behavior when removing indentation. Don't move to the start or end of the line when ctrl-s is pressed. syntax highlighting for numbered lists in Markdown, and lists where each item spans more than one line. Update dependencies. Update documentation.
2.34.131 Dec 2020 06:23 minor feature: - Add support for formatting HTML with ctrl-w if tidy is installed. - Improve the Ada support. - Minor improvement for Go syntax highlighting. - Minor improvement for how Rust executables are built. - Improved Rust syntax highlighting, including not interpreting #! ...(...) directives as shebangs. - Save the file before pasting using external utilities like wl-paste. - Make the portal feature per-user instead of per-system. - Better support for Zig. Recognize if SDL2 is in use and add -lsdl2, as a special case, only if there is no build.zig file. - When editing PKGBUILD files and selecting Call Guessica from the command menu, make it possible to undo. - Also support building Kotlin .kts files with ctrl-space (not just .kt). - Fix compilation for FreeBSD by using a specific commit of github.com/pkg/term. - Update dependencies. - Update documentation.