Getting Started With EdimCoder

Christian Seibold  —  5 months ago [Edited 1 month, 2 weeks later]
Following the acceptance of EdimCoder to the network, I wanted to write a basic getting started tutorial to introduce potential users to EdimCoder's features.

Starting the Program

There are multiple ways to start the program. Double clicking the executable, or running it from the terminal, will open the editor with a Scratch buffer. The Scratch buffer can be used for notes, copying and pasting for later use, and other things.

The other way to start the program is by dragging a file to the executable, or, in the terminal, passing the program a file path. This will open the Scratch buffer and the file. Then the active buffer is switched to the provided file.

The Prompt

As soon as you start the program, you are met with a prompt. This is the prompt where you type commands used in the editing of a file. The prompt looks like this:

<0: -Scratch-*|0>

The 0: tells you the current active buffer.

-Scratch- is the filename of the active buffer.

* shows that the buffer/file has been modified since it's last save.

|0 is the current (active) line (aka. cursor). The term used for this will always be "current line". The current line is the line number used by default when commands are not passed a line number.

The Help Command

There is a help command that will print out all of the commands that EdimCoder has along with what they do.

Output, Context, and Gutter Info

EdimCoder tries to make sure the user knows what's happening at all times. It does this by providing Output and Context for all commands, and Gutter Information for commands that manipulate the file.


EdimCoder gives much more output than other line editors. The output given tries to be helpful and non-redundant. Both Context and Gutter Info may be a part of this output.


Commands that manipulate the file give context by showing the previous line of the line being modified/acted on. Additionally, most commands will also print out the line after the operation. This is to hopefully help the user recognize where in the file the command is happening.

Gutter Info

Gutter info is used by most file manipulation commands that print out lines by giving information on what command is being applied to the line number or what is happening with that line. For example, the delete command will show the line number being deleted with an x in the gutter, the far left just before the line number.

You may also see ^ or V in the gutter. This is used with Context to show what has happened to the line number after the line that was operated on. For example, the delete command will show the line that was after the line(s) that were deleted with ^ to show that that line was moved up.

The Commands

Commands can be grouped into categories based on what they do (these groups are shown in the help file). Additionally, they can also be sorted by whether they modify lines or characters and whether they replace/insert lines or characters.


  • Basic - Basic file/line manipulation commands (insert, delete, move, jump to)
  • Find and Replace
  • Print and Preview - Print will print a line or set of lines, Preview mode will act like pg/less/more. If Preview mode is provided a line number, it will begin at that line number.
  • Files and Buffers - Manipulation of files and buffers, including saving, opening new file, switching buffers, et al.
  • File Info, Outlines, and Bookmarks - Commands to show file info, an outline of the current file, and Bookmarks

"Object" being modified/acted on/applied to

Commands modify or act on one of the following two things:
  1. Lines (or Line Ranges)
  2. Characters

An example of this would be an insert command that inserts before a line number. This command acts on a line. Find will search for characters, so that command acts on characters.

"Object" being used by (aka. the input to) the command

Many commands take input. This input can be one of the following two things:
  1. Line(s)
  2. Characters

And example of this would be the insert command that inserts before a line number with a line or lines. The append command inserts characters after a line, so it uses (as input) characters. One Replace command searches for characters and replaces it with characters.

Multiple Versions of Commands

Some commands, namely Find and Replace, have different versions of the command. For example, the Replace command can replace a line with a line, or characters with characters.

Command Names

The system behind the way the commands are named is as follows:
  • Commands that are uppercase accept characters as input
  • Commands that are lowercase accept line(s) as input
  • Most commands are one character, some of the less useful ones are a full word (e.g. 'help', 'clear', and 'info')
  • Often the command's character is taken from the first letter of the English word that represents what the command does. All variations of the Replace command use 'r' or 'R' as they Replace.
  • Commands that don't modify the file are almost always lowercase

Command Syntax

Command syntax is pretty basic. They can have one of the following:

command (line/range)
command (bookmark)
command (line/range) (string)
command (bookmark) (string)

All commands that take a string also allow the string to be omitted, in which case they will prompt for the string.
All commands that take a line number or range allow the line number/range to be omitted, in which case the current line will be used.
All commands that take a line number or range may also take a bookmark (more on these later).

strings are not denoted by quotes. Instead, the one space directly after the line/range is ignored, and the rest after is part of the string.

If a command takes a second input (e.g. the replace commands), a prompt will be given.

Line Ranges

Previously I have mentioned line ranges. Almost all file manipulation commands will accept line ranges. This is the syntax:

<start line number>:<end line number>

Some commands act on the whole line range, for example, the delete and move commands will delete/move the line or the whole line range.
However, some commands only act on one line. If a line range is given in these cases, the command will use the most intuitive line. For example, inserting a line before a range will insert a line before the start line number. Inserting a line after a range will insert a line after the end line number.

Whether a command can accept a line or line range, or just accepts a line, is shown in the help screen.


Bookmarks allow you to give a line range a name. If you wanted to give a command a line range, you have the option of providing a bookmark, in which case the command will use the line/line range that the bookmark represents.

You can create a bookmark with the d (range) (string) command. The provided string is the name of the bookmark.
When giving a command a bookmark, the bookmark has the syntax #bkmrkName.

You can see a list of your bookmarks with the g command.

Default Bookmarks

Some default bookmarks are provided by EdimCoder. These are generated automatically. You can see a list of them at the bottom of the help screen.

The Section Bookmark

A particularly useful bookmark is the section bookmark. The section bookmark changes based on context (what the current line is). It always represents the line range of the bookmark that the current line is within the bounds of.

If you have a bookmark called testFunction that represents lines 10:25, and the current line is on line 15 (within the bounds of 10 and 25), then #s will represent lines 10:25.


Outlines are provided for some code files, including C, Markdown, C/C++ Header, Lua, and TXT files. Currently outlines only show function declarations (or headers).

Outlines also auto-generate bookmarks for all of your function declarations, where the name of the bookmark is the name of the function.

Multiline Insertion Mode

When running a command that allows the insertion of multiple lines, for example 'i' or 'a', you denote end of input with Ctrl-D on Unix or Ctrl-Z on Windows. The line that you press Ctrl-D on will not be included with the lines being inserted.

You can also cancel the operation, including all lines entered during the operation, by pressing Ctrl-X.
Log in to comment