MCPcopy Index your code
hub / github.com/ahmednooor/lino

github.com/ahmednooor/lino @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
222 symbols 711 edges 30 files 2 documented · 1% updated 4y ago★ 383 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<span align="center"><img src="https://raw.githubusercontent.com/ahmednooor/lino/main/assets/lino-icon.png" alt="lino" width="156" height="156" class="center" /></span>
<h2 align="center">A command line text editor with notepad like key bindings.</h2>
<span align="center"><img src="https://raw.githubusercontent.com/ahmednooor/lino/main/assets/screenshot.png" alt="screenshot" class="center" /></span>
<hr />

Crates.io Crates.io Crates.io

Features

  • Notepad like keybindings.
  • Multi-line indentation.
  • Auto-indented new lines.
  • Line numbers.
  • Syntax highlighting.
  • Copy, Paste.
  • Undo, Redo.
  • Find, Replace.

Usage (Key Bindings)

Key Function
, , , Move cursor
Ctrl + , Move by word
Page Up , Page Down Move by page (scrolling)
Home Move to line start
End Move to line end
Shift + , , , Select
Ctrl + Shift + , Select by word
Shift + Page Up , Page down Select by page
Shift + Home Select upto line start
Shift + End Select upto line end
Ctrl + A Select all
Backspace Delete backward
Delete Delete forward
Ctrl / Alt + Backspace Delete backward by word
Ctrl / Alt + Delete Delete forward by word
Shift + Delete Delete current line
Ctrl / Alt + Move current line up
Ctrl / Alt + Move current line down
Ctrl / Alt + Shift + Duplicate current line upward
Ctrl / Alt + Shift + , Ctrl + D Duplicate current line downward
Alt + ] / , Tab Increase indentation
Alt + [ / , Shift + Tab Decrease indentation
Enter Enter auto-indented new line
Ctrl / Shift + Enter Enter non-indented new line
Ctrl + F Find, Replace
Ctrl + X Cut
Ctrl + C Copy
Ctrl + V Paste
Ctrl + Z Undo
Ctrl + Y Redo
Ctrl + S Save
Alt + S Save as
Ctrl + Q , Ctrl + W Close

Some key-bindings might not work on different terminals. But the most common ones should work on all.

Install

You will need to have Rust (2018 or higher) installed on your system before proceeding.\ Install it from https://www.rust-lang.org/tools/install

1. Install with Cargo

cargo install lino

2. Run

lino <optional-filename>

3. Move binary to /usr/bin/ on Linux (Optional)

sudo mv `which lino` /usr/bin/

Tested on Windows 10 and WSL (Ubuntu 18.04)

Build

You will need to have Rust (2018 or higher) installed on your system before proceeding.\ Install it from https://www.rust-lang.org/tools/install

1. Clone this repo

git clone https://github.com/ahmednooor/lino.git

2. Go into the cloned repo directory

cd ./lino/

3. Build & run with Cargo

cargo run <optional-filename>

On Linux (Debian based), if you head into problems, try installing the following libraries and re-run with cargo.

sudo apt install xorg-dev libxcb-present-dev libxcb-composite0-dev libxcb-shape0-dev libxcb-xfixes0-dev

If you get an error about something like couldn't link with cc, try installing the following.

sudo apt install gcc gcc-multilib binutils

NOTE: If you are unsure about above mentioned Linux libraries, do it on a dev system or a vm instead of your daily driver.

Rust Dependencies

  • crossterm (to interact with the terminal)
  • ctrlc (to prevent close on Ctrl+c)
  • copypasta (for clipboard access)
  • syntect (for syntax highlighting)
  • unicode-width (for multi-width unicode character rendering)

    A big Thanks to the authors/maintainers/contributors of these libraries.

Motivation

Imagine you're a mortal who is accustomed to VS Code or some other GUI Text Editor/IDE, and suddenly you have to login to some SSH or fire up a Linux Server Distro with no GUI. You find yourself treading in the territory of immortals where beasts like Vim, Emacs and others reside. You find a friend called Nano, but it doesn't speak your tongue (i.e. key bindings), so you waste your time trying to learn a new way to communicate instead of getting the job done and get the hell out of there. This editor can be your friend that speaks the same-ish tongue and you can take it there with you. It isn't the only one though, there is another one (a better one) called Micro.

Core symbols most depended-on inside this repo

clear_task_feedback
called by 49
src/lino/task_feedback.rs
set_task_feedback_normal
called by 43
src/lino/task_feedback.rs
panic_gracefully
called by 43
src/lino/init.rs
update_last_cursor_col
called by 31
src/lino/cursor.rs
clear_selection
called by 18
src/lino/selection.rs
save_to_history
called by 18
src/lino/history.rs
move_cursor_right
called by 17
src/lino/cursor.rs
delete_selected
called by 14
src/lino/edit.rs

Shape

Method 199
Class 21
Enum 1
Function 1

Languages

Rust100%

Modules by API surface

src/lino/commands.rs51 symbols
src/lino/cursor.rs24 symbols
src/lino/edit.rs22 symbols
src/lino/mod.rs19 symbols
src/lino/errors.rs15 symbols
src/lino/init.rs12 symbols
src/lino/render.rs10 symbols
src/lino/_graveyard/_render.bkp.rs8 symbols
src/lino/highlight.rs6 symbols
src/lino/selection.rs5 symbols
src/lino/find.rs5 symbols
src/lino/util.rs4 symbols

For agents

$ claude mcp add lino \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page