/home/ /patches/ /releases/ /source/ /news/ /wiki/ /rss/

The text editor sim

sim is a simple, interactive, multi-file text editor designed for screens with monospaced font. It is heavily inspired on the 'vim' and 'sam' text editors, hence the name sim. The main goal of this software is portability. It only depends only on the C89 standard, and tries to minimize the usage of system calls as much as possible, making it easy (or not even necessary) to port to another environment.

Version 0.3.1 released

This version provides a couple of important hotfixes for the 0.3 release

  • Improved behavior of fr_calc() when the dot address has different positions (e.g. during insert())
  • Improved behavior of fr_calc() when the file buffer is modified
  • Fixed an issue where a long input() string would show garbage data

I think fr_update() is finally working as intended now... I guess...

Version 0.3 released

New features

  • Introduction of pline() for line referencing
  • Introduction of gmove() for 'global counter'-based movement and for line setting
  • Added a README to the project
  • Improved the behavior of fr_update()

Bug fixes

  • Searching backwards could jump to an incomplete search string
  • move(Word) at the end of a file could go beyond the end of the file buffer

Download the latest release

Clone the repository:
git clone git://ssnf.xyz/sim



If you want to contribute to the sim project, make sure to read the mailing list guidelines below so that your post does not get ignored.

There are two kinds of patches: the ones you consider necessary for the project (upstream patches), and the ones that you consider that fit your personal taste (personal patches). For the former type of patch, please submit them on the 'hackers' mailing list, and for the latter, they should be sent to the 'dev' mailing list.

All patches must be sent as inline text, for easier review.

Mailing lists

  • dev@ssnf.xyz - for general discussion/bug reports about the projects hosted on my servers and for personal patch sharing.
  • hackers@ssnf.xyz - for upstream patch discussion.
  • news@ssnf.xyz - for news updates on my projects (read-only)

List commands

Replace LIST with your desired list name.

  • LIST+subscribe@ssnf.xyz - subscribe to the mailing list. (read/write)
  • LIST+subscribe-digest@ssnf.xyz - subscribe to the digest version of the mailing list. (read/write)
  • LIST+subscribe-nomail@ssnf.xyz - subscribe to the nomail version of the mailing list. (write)
  • LIST+unsubscribe@ssnf.xyz - unsubscribe to the mailing list.
  • LIST+unsubscribe-digest@ssnf.xyz - unsubscribe to the digest version of the mailing list.
  • LIST+unsubscribe-nomail@ssnf.xyz - unsubscribe to the nomail version of the mailing list.
  • LIST+get-N@ssnf.xyz - retrieve message number N from the list's archive.
  • LIST+help@ssnf.xyz - get more information about commands or how the mailing list works.


  • Don't send HTML mails. Use plain-text UTF-8.
  • Don't top-post. Bottom-post.
  • When creating new posts on the mailing lists, make sure the subject is prepended with the project name you're refering to.

    For example:

    	Subject: [sim] cursor behaving weirdly
  • If submitting a patch, append [patch] to the project name and if it is a personal patch, apply the following syntax to your subject (SHORTHASH is the upstream commit that the patch was made for):
    	Subject: [sim][patch] patchname-YYYYMMDD-SHORTHASH.diff

    Mail not following these guidelines will be ignored.