small terminal text editor with syntax highlighting
The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:
Bim is a terminal text editor with syntax highlighting.
Inspired by Vim (one might say a Bad Imitation) and featuring similar mode-based editing, Bim was originally written for ToaruOS, but it has also been tested in Linux, Sortix, FreeBSD, and macOS.
Bim is intended as the included text editor in ToaruOS, a hobby operating system built from scratch.
Bim aims to be lightweight and featureful with no external dependencies, providing a modern editing experience in a single fully-encapsulated binary.
git diffstatus in-line, along with unsaved changes.
Bim has no external dependencies beyond a functioning C library, C99 compiler, and sufficient escape code support in the hosting terminal.
Unicode support is recommended, but not completely required. Most terminals support the handful of characters used in the default setup regardless, but use
-O nounicodeif you experience issues with the rendering of indentation hints.
256-color and 24-bit color are optional. The default theme uses only the standard 16 colors. If your terminal only supports 8 colors, you can also supply
-O nobrightto disable bright colors.
Scrolling is normally done through
^[[1T. If your terminal doesn't support these escapes, or has trouble scrolling, supply
-O noscrollto have the screen refresh when scrolling. This may be slow.
Mouse support with
^[[?1000his available; if this escape sequence causes issues in your terminal, use
The alternate screen is used if available with
^[[?1049h. This can be disabled with
Default keybindings can be found in docs/mappings.md.
A complete listing of available commands can be found in docs/commands.md.
You can use Bim to display files in your terminal with syntax highlighting with
bim -c(no line numbers) and
bim -C(with line numbers).
You can pipe text to bim for editing with
bim -. Note that Bim will wait for end-of-file before launching, so this is not suitable for use as a pager (pager support is planned).
Bim includes a handful of color schemes for the interface and syntax highlighting.
To enable themes, place theme scripts in an acessible directory and call them with
For example, you can install bim themes to
/usr/share/bim/themesand add the following lines at the start of your bimrc:
rundir /usr/share/bim/themes theme sunsmoke
By default, themes are not installed along with bim. You can also embed themes in your bimrc directly.
A plain 16-color theme. Can be configured for use on terminals with or without bright color support. Looks a bit like Irssi.
An original 24-bit color theme with rustic browns and subdued pastel colors.
A 256-color version of Sunsmoke for use in terminals that do not support 24-bit color.
A 256-color theme based on the theme of the same name for Vim.
A 24-bit color theme based on the popular color palette.
A 24-bit color theme based on the one for Atom and Sublime, featuring low contrast blues.
Based on selenized by Jan Warchoł
Bim will automatically run commands from
A detailed bimrc example is available at docs/example.bimrc.
Bim scripts can define functions which can be called with
call function_name. Functions with names like
onload:...will be automatically run when a file with the matching syntax is opened:
function onload:c tabs tabstop 4 end
Not all syntax highlighters are complete or support all features of their respective languages.
Bim's core functionality lives in
bim.c. Syntax highlighter definitions are in
syntaxand use constructor methods to initialize and hook into the syntax database. Similarly, themes are in
themes. A single-file "baked" version of Bim can be generated with
python3 docs/bake-bim.py, which is suitable for distribution in ToaruOS and for when a "one-file" editor is desirable. Bim can be built without the
themesfiles, as well; just run
c99 -o bim bim.c. Baked versions of Bim may be smaller than regular Bim due to better optimizations of debugging information.
Some interactions in Bim work differently from Vim, and sometimes this is intentional. Bim's primary interactions are built around a selection, while Vim has verbs and navigation nouns.
CHAR SELECTIONdoes not let the cursor move past the end of the line, unlike
VISUALmode in Vim.
Some interactions in Bim work differently from Vim, and sometimes this is unintentional. Bim is missing many features I would like to implement, like regular expression search (and replacement).
Bim is released under the terms of the ISC license, which is a simple BSD-style license. See LICENSE for details.
Bim is still primarily developed alongside ToaruOS. This repository is a mirror with fake history going back to the start of that project. Pull requests merged here will be patched into ToaruOS.
If you're using Bim, want to contribute to development, or have ideas for new features, join us in