A performant terminal-based project editor with extensive shortcuts

Overview

crates.io crates.io

omega

A performant and extensive terminal-based project editor with a wide variety of modern shortcuts.

How to use

omega [path]

This section will guide you through the initial steps of opening the editor. When specifying a path, if it points to a file, the editor will set the surrounding directory as the project directory. If the path points directly to a directory, that directory will become the project directory.

Within the editor, you'll find a panel on the left side that displays your project's directory structure, allowing for easy navigation through your project files.

Navigating through your project is straightforward: selecting an entry from the left panel will close the currently open file and open the newly selected one. The editor efficiently manages your files by checking if a file is already open and retrieving its data from its current state or loading it from the filesystem to store in the state. All changes to files are temporarily cached in the state using a Hashmap, ensuring that unsaved files can be reopened, edited further, and eventually saved, provided the editor remains open. Upon exiting the editor (using Ctrl + q), it will prompt you to save any unsaved changes.

Files that are being edited will be marked with an asterisk * in the title bar; saving these files will remove the asterisk.

The editor also offers Global Keybindings for file and directory management tasks, such as adding, editing, and deleting. Please exercise caution when deleting files, as this action is irreversible, with no intermediate trash bin for recovery.

Bindings

Global Keybinding
Infos Esc
Toggle debugger Ctrl + p
Quitting Ctrl + q
Goto an already opened File Ctrl + g
Opening a File/Project Ctrl + o
Creating a new File/Directory Ctrl + n
Renaming a File/Directory Ctrl + r
Deleting a File/Directory Ctrl + d
Saving File Ctrl + s
Editor Keybinding
Copying Line Ctrl + c
Paste Clipboard Ctrl + v
Cut Line Ctrl + x
Move Line Shift + /
Move Cursor to EoL Shift + /
Ident Tab
Remove Ident Shift + Tab

Moving the cursor via mouse input is also possible.

Installation

To install omega, you can use Cargo by running the following command in your terminal:

cargo install omega

Alternatively, you can download the binary directly from the releases page.

Additional Requirements

For Linux-based systems, it is necessary to have the libx11-dev (Debian/Ubuntu) or libX11-devel (Fedora/RHEL) packages installed.

It's important to note that on Unix-based systems, omega relies on ncurses as its backend, which will need to be installed. For Windows users, omega uses crossterm as its backend.

You might also like...
Basic vim-like editor for Redox-OS

red red is an editor based on vim written in Rust. Goal of this project is to provide a basic command-line editor, much like nano. Targeted for Redox.

A standalone code editor with syntax highlighting and themes.
A standalone code editor with syntax highlighting and themes.

CodeEditor A standalone code (and text) editor for people like me who write their own user interfaces utilizing crates like pixels. CodeEditor renders

Move multiple files, with the power of your editor

NOTE FOR USERS THAT WANT TO TRY THIS OUT! The current code on the master branch doesn’t work as documented, as a newer more powerful interface is bein

Simple code editor made with Freya 🦀
Simple code editor made with Freya 🦀

Simple code editor made with Freya 🦀 This is a work in progress simple code editor that showcases how to use tree-sitter and freya together. WARNIN

Julia plugin for the Lapce Editor (using LanguageServer.jl)

Lapce Julia (LanguageServer) Lapce plugin for the Julia language powered by LanguageServer.jl Pre-requisites Make sure you have the julia binary on PA

A basic text editor, written in Rust (hence the name).

rut A basic text editor, written in Rust (hence the name). Why, though? I just wanted a basic TUI text editor (like Nano) that could: Be used with all

Learn the helix editor keymap on the web!
Learn the helix editor keymap on the web!

Helix Shortcut Quiz A web quiz built with yew for testing your knowledge of helix editor shortcuts. Development Installation Frontend If you don't alr

Simple yet powerful multi-line text editor widget for tui-rs and ratatui
Simple yet powerful multi-line text editor widget for tui-rs and ratatui

tui-textarea tui-textarea is a simple yet powerful text editor widget like textarea in HTML for tui-rs and ratatui. Multi-line text editor can be ea

nvim-oxi provides safe and idiomatic Rust bindings to the rich API exposed by the Neovim text editor.

🔗 nvim-oxi nvim-oxi provides safe and idiomatic Rust bindings to the rich API exposed by the Neovim text editor. The project is mostly intended for p

Comments
  • (⚠Unstable⚠) syntec syntax highlighting

    (⚠Unstable⚠) syntec syntax highlighting

    I have tried to implement syntax highlighting by using syntec and modifying the draw() function from the EditArea. My attempt is extremely buggy (it crashes sometime at random when using the editor) so i recommend to improve my code when mergin or putting it into another branch.

    Known Errors/Bugs

    • ~~(sometimes) crash when resizing the terminal~~
    • (sometimes) crash when deleting content at the top/end of the file
    • ~~(always) crash when there isn't enough space for the code~~
    • ~~(always) crash when "cursive ui" doesn't fit in the terminal window~~
    • ~~(sometimes) crash when opening a file~~

    Screenshots

    Screenshot (765) Screenshot (766)

    By the way, you did a really good job by developing omega ;)

    opened by BoettcherDasOriginal 2
  • Attempted compile on Void Linux

    Attempted compile on Void Linux

    After trying to compile on void I get this error about the clippers dependency:

    error: could not find native static library `z`, perhaps an -L flag is missing?
    
    error: could not compile `clippers` (lib) due to 1 previous error
    

    I have zlib-devel and libX11-devel installed so I'm not sure what else I need.

    bug 
    opened by auronandace 2
  • Tackle some simple clippy lints.

    Tackle some simple clippy lints.

    Lints attempted:

    https://rust-lang.github.io/rust-clippy/master/index.html#/semicolon_if_nothing_returned https://rust-lang.github.io/rust-clippy/master/index.html#/manual_string_new https://rust-lang.github.io/rust-clippy/master/index.html#/map_unwrap_or https://rust-lang.github.io/rust-clippy/master/index.html#/implicit_clone

    opened by auronandace 1
  • Specify a MSRV

    Specify a MSRV

    Adding a field for your Minimum Supported Rust Version can be handy for people who wish to package your application for a linux distribution.

    The field name in your Cargo.toml file under the [package] section is rust-version.

    opened by auronandace 1
Releases(0.3.3)
Owner
Nils Wrenger
Hi, I use Fedora OS and have skills in programming with Rust btw
Nils Wrenger
Native cross-platform full feature terminal-based sequence editor for git interactive rebase.

Native cross-platform full feature terminal-based sequence editor for git interactive rebase.

Tim Oram 1.2k Jan 2, 2023
mn is my project to learn rust, I will try to build a markdown editor

med is a markdown editor This is my project to learn rust programming language, I will try to build a powerful markdown editor. Highlight: Support Vim

Skoo Wu 7 Dec 29, 2022
Amp: A text editor for your terminal.

Amp: A text editor for your terminal. Heavily inspired by Vi/Vim. Amp aims to take the core interaction model of Vim, simplify it, and bundle in the e

Jordan MacDonald 3.3k Jan 3, 2023
Ox is a code editor that runs in your terminal

Ox editor Ox is a code editor that runs in your terminal. About The Project Ox is a code editor. It was written in Rust using ANSI escape sequences. I

null 0 Feb 3, 2022
qsv - Performant CLI tool to query CSVs through SQL

qsv Performant CLI tool to query CSVs through SQL Installation After cloning the repository, you can install a binary locally using cargo install --pa

Dermot Haughey 3 Oct 28, 2021
Rust Imaging Library's Python binding: A performant and high-level image processing library for Python written in Rust

ril-py Rust Imaging Library for Python: Python bindings for ril, a performant and high-level image processing library written in Rust. What's this? Th

Cryptex 13 Dec 6, 2022
SKYULL is a command-line interface (CLI) in development that creates REST API project structure templates with the aim of making it easy and fast to start a new project.

SKYULL is a command-line interface (CLI) in development that creates REST API project structure templates with the aim of making it easy and fast to start a new project. With just a few primary configurations, such as project name, you can get started quickly.

Gabriel Michaliszen 4 May 9, 2023
A terminal ASCII media player. View images, gifs, videos, webcam, YouTube, etc.. directly in the terminal as ASCII art.

Terminal Media Player View images, videos (files or YouTube links), webcam, etc directly in the terminal as ASCII. All images you see below are just m

Max Curzi 36 May 8, 2023
ask.sh: AI terminal assistant that can read and write your terminal directly!

ask.sh: AI terminal assistant that read from & write to your terminal ask.sh is an AI terminal assistant based on OpenAI APIs such as GPT-3.5/4! What'

hmirin 5 Jun 20, 2023
A simple and efficient terminal UI implementation with ratatui.rs for getting quick insights from csv files right on the terminal

CSV-GREP csv-grep is an intuitive TUI application writting with ratatui.rs for reading, viewing and quickly analysing csv files right on the terminal.

Anthony Ezeabasili 16 Mar 10, 2024