TERMINAL TEXT EDITOR · GO TUI

cmdit

Uma alternativa moderna, rápida e elegante aos editores de terminal tradicionais, desenhada para desenvolvedores e administradores de sistemas.

Linguagem
Go (Golang)
Arquitetura
Gap Buffer O(1)
Dependências
Zero (Binário Único)
Startup
< 15ms

TL;DR Executivo — Resumo da Engenharia

O cmdit é um editor de texto de terminal escrito em Go por Alex Santos. Concebido para preencher a lacuna entre a complexidade do Vim e a simplicidade excessiva do Nano, o cmdit oferece syntax highlighting de alto contraste, manipulação de texto ultrarrápida através de uma estrutura de memória Gap Buffer, suporte nativo a múltiplos cursores, barra de status rica com contagem de caracteres e atalhos de teclado modernos e familiares (Ctrl+S, Ctrl+F, Ctrl+Q).

DIAGRAMA & WORKFLOW

Arquitetura de Fluxo do Sistema

Visão macro de como o projeto processa requisições, gerencia dados e entrega valor técnico com máxima eficiência.

Fluxo Lógico & Pipeline de Execução
+-------------------------------------------------------+
| cmdit v1.0.0 -- ~/projects/server.go                  |
| 1 | package main                                      |
| 2 |                                                   |
| 3 | func main() {                                     |
| 4 |     println("Servidor ativo na porta :8080")       |
| 5 | }                                                 |
+-------------------------------------------------------+
| [NORMAL] Ln 4, Col 5 | UTF-8 | Go | Ctrl+S Salvar     |
+-------------------------------------------------------+
ENGENHARIA DETALHADA

Os Pilares Técnicos Fundamentais

Decisões de design, algoritmos e técnicas aplicadas para garantir confiabilidade, segurança e excelência operacional.

01

Modelo de Memória em Gap Buffer para Baixa Latência

Operações de inserção e deleção em tempo O(1) na posição do cursor

Editores de terminal sofrem com travamentos quando usam arrays de strings lineares para representar arquivos médios ou grandes. O cmdit utiliza a consagrada estrutura de Gap Buffer: um bloco contíguo de memória com uma área livre móvel que acompanha o cursor do editor. Isso garante que a digitação ocorra com latência imperceptível mesmo sob SSH com banda limitada.

02

Renderização ANSI em Duplo Buffer (Double Buffering)

Eliminação completa de screen tearing e piscamentos de terminal

Cada frame desenhado no terminal é primeiramente montado em uma matriz de caracteres em memória (framebuffer virtual). Apenas as células que realmente mudaram de cor ou caractere entre o frame anterior e o atual são enviadas como sequências de escape ANSI para o terminal, reduzindo o tráfego I/O em mais de 85%.

03

Colorizador Sintático Baseado em Léxicos Leves

Destaque visual agradável para as linguagens mais populares da indústria

Implementa um lexer determinístico para Go, Python, JavaScript, TypeScript, HTML, CSS, JSON e Markdown. Palavras-chave reservadas, literais de string, números, comentários e diretivas são destacados com uma paleta de cores inspirada no tema neon dark.

04

Distribuição Estática e Compatibilidade Cruzada

Binário compilado autossuficiente para Linux, Windows e macOS

Aproveitando o compilador do Go, o cmdit é compilado como um único executável estático sem necessidade de bibliotecas de sistema compartilhadas (`glibc` ou `ncurses`). Basta baixar o binário e colocar em seu `$PATH` para começar a editar arquivos em qualquer ambiente.

IMPLEMENTAÇÃO EM CÓDIGO

Código em Prática

Exemplo concreto de uso, configuração e integração técnica.

Terminal — Instalação e Comandos Básicos do cmdit BASH
# Compilar e instalar via Go Toolchain
go install github.com/alexlivre/cmdit@latest

# Abrir um arquivo para edição imediata
cmdit main.go

# Atalhos principais dentro do editor:
# Ctrl + S : Salvar arquivo
# Ctrl + F : Localizar texto (Find)
# Ctrl + G : Ir para linha específica (Go to line)
# Ctrl + Q : Sair do editor
DÚVIDAS & DECISÕES

Perguntas Frequentes & Respostas Técnicas

Esclarecimentos detalhados sobre funcionamento, licenças, compatibilidade e privacidade.

O cmdit precisa do ncurses ou outra biblioteca C instalada?

Não. O cmdit foi desenvolvido em Go puro, interagindo diretamente com os file descriptors stdin e stdout do terminal.

O cmdit suporta arquivos com codificação UTF-8 e acentos?

Sim, o editor possui suporte completo a caracteres multibyte UTF-8, incluindo acentuação da língua portuguesa, símbolos e emojis.

Qual a diferença entre o cmdit e o nano?

O cmdit inclui realce de sintaxe moderno por padrão, renderização em double buffering para eliminar flickering, atalhos universais e performance substancialmente superior em sessões remotas.

Existe suporte para desfazer e refazer edições?

Sim, o cmdit mantém um histórico de desfazer (Undo - Ctrl+Z) e refazer (Redo - Ctrl+Y) em pilha ilimitada na memória.