Note: EdimCoder has been moved from GitHub (and Git) to Pijul's The Nest (and Pijul VCS). You can see the old Git history in gitlog.log or from the GitHub repo here: https://github.com/krixano/Edim
Edim Line Editor
A simple interactive line editor program inspired by vim, ed, 4coder, and modern editors.
This readme was written using Edim.
Building and Running
Build Debug Executable
- To build on Windows
build.bat clang for 64-bit clang, add "x86" for 32-bit.
build.bat gcc for 64-bit gcc, add "x86" for 32-bit.
build.bat msvc for msvc, use
build.bat msvc x86 for 32-bit.
- To build on Linux
./build_linux (uses gcc)
To run the debug executable, on Windows run
build run. On Linux, the executable is in the
Build Release Executable
- To build on Windows
build.bat msvc x64 release for msvc 64-bit, change "x64" to "x86" for 32-bit
To run the release executable, on Windows run
build run release.
- New File
- Open File
- Save File
- Insert line(s) before/after line number
- Prepend/Append to line
- Replace line
- Replace first occurance of string in line
- Delete line
- Will also show the line that was moved up into the deleted line's place
- Cancel operation (using Ctrl-X+Enter)
- Shows previous line of current line being operated on to give context
- Ability to preview whole file in a similar fashion to more/less
- including starting from a given line
- Ability to preview an individual line (along with the line before and after to give context)
- Ability to preview a range of lines
- Ability to show file information
- Show the first line that was moved down due to appending before/after a line.
- Move a line up or down one
- Colored Output
- Find first occurance of string in file (and print the line out)
- Find first occurance of string in a given line
- Show outline of markdown files (shown when file is opened and with fileinfo command, '#')
- Show outline of C files (shows function implementations)
- When opening file, if it doesn't exist, go straight to the editor to create the file.
- Ability to open multiple buffers (files), switch between them, and close them.
- Set current line number to specified line ('j (line#)') or to last line in file ('j$').
- When a command accepts a line number as first argument and one wasn't passed in, use current line instead.
- Bookmarks NEW (11/20/2018)
- Creating a bookmarks
- Listing all bookmarks
- Using bookmark in place of line number for all commands
- Cancel Prompts for getting information for a command (for example, when it prompt you to enter a line number when one wasn't provided when the command was typed)
- Simple Undo - Undo the last operation (cannot undo an undo; only undo the latest operation, no more; After an undo is done, must wait for another operation before can undo again)
- For C and C++ files (.c, .cpp, and .h), parse the file to get function and variable declarations
- Ability to list declarations - basically like an outline of the file
- Ability to show line a declaration is on
- Ability to show all lines of a function
- Simple syntax highlighting for C, C++, Bash, and Batch
- Repeat the last operation
- Better data structure for the lines that will allow easily moving lines around, deleting them, and inserting them
- Add text before/after string in line
- Find all occurances
- Replace all in line
- Replace first occurance in file
- Replace all in file
- Ability to change setting on how many lines to show before the line you are currently modifying (to give context)
- Tab completion for opening/saving files
- UTF-8 Support
- Duplicating a line
- Copying a line into clipboard
- Cutting a line
- Move a line to before/after a given line number
- Better prompt command parsing
- Insert before/after character in line
- Switch to hashmaps
- Deleting bookmarks
- Ability to save them in separate (projects/settings) file
- Ability to split a line into two lines
- Ability to use relative line numbers based on current line number
- 'info' - Gives back information on the file, including number of lines, filename, number of characters, filetype, etc.
- 'j (line#)' - Set's current line to line number (no output). Use 'j$' to set last line as current line.
- 'a (line#)' - Insert after the line number
- 'i (line#)' - Insert before the line number
- 'A (line#)' - Appends to a line
- 'I (line#)' - Prepends to a line
- 'r (line#)' - Replace a line with a new line
- 'R (line#) (string)' - Replace the first occurance of the string in the line
- 'x (line#)' - Deletes a line
- 'm (line#)' - Move the line up by one
- 'M (line#)' - Move the line down by one
- 'f (string)' - Finds the first occurance of the string in the file and prints the line it's on out
- 'F (line#) (string)' - Find the first occurance of the string in the line and print the line out showing you where the occurance is
- 'u' - Undo the last operation, cannot undo an undo, cannot undo past 1 operation - unimplemented
- 'c' - Continue from last line in file
- 'p' - Preview whole file
- 'P (line#:start):(line#:end)' - Preview a line or set of lines, including the line before and after
- 'b' - List all currently open buffers
- 'b (buffer#)' - Switch current buffer to buffer #
- 'bn' - Switch current buffer to next buffer. Will wrap around when hits end.
- 'bp' - Switch current buffer to previous buffer. Will wrap around when hits beginning.
- d(line#:start):(line#:end) (string)' - Create bookmark with line range start:end and name string
- 'w (string)' - Print out line range of bookmark with name string
- 'g' - List out all bookmarks
- 'o' - Open file in new buffer
- 'n' - Create new file in new buffer
- 's' - Save current buffer
- 'e / E' - Exit current buffer / Exit current buffer (without save)
- 'q / Q' - Quit, closing all buffers / Quit, closing all buffers (without save)
Any command that accepts a line number or line range - denoted by
(line#:start):(line#:end) - can also accept a bookmark. Bookmarks are prefixed with