mle é um editor de texto pequeno, flexível e baseado em terminal escrito em C.
Funciona em Linux, Windows (Cygwin ou WSL), FreeBSD, macOS e muito mais.
$ sudo apt install git build-essential # install git, make, gcc, libc-dev
$
$ git clone --recursive https://github.com/adsr/mle.git
$ cd mle
$ make mle_vendor=1
Para construir um binário completamente estático, tente make mle_vendor=1 mle_static=1
.
Você também pode executar make
simples para vincular bibliotecas do sistema em vez de vendor/
. Observe que isso requer a instalação dos seguintes pacotes:
uthash-dev
liblua5.4-dev
libpcre2-dev
Para instalar em /usr/local/bin
:
$ make install
Para instalar em um diretório personalizado, forneça prefix
, por exemplo:
$ make install prefix=/usr # /usr/bin/mle
mle pode estar disponível para instalação através do gerenciador de pacotes do seu sistema.
# apt install mle # Ubuntu and Debian-based distros
# dnf install mle # CentOS, RHEL, Fedora-based distros
# pkg install mle # FreeBSD
# yay -S mle # Arch (via AUR)
# snap install mle # all major Linux distros
# nix-env -i mle # NixOS (via nixpkgs)
# apk add mle # Alpine
# xbps-install mle # Void
# brew install mle # macOS (Homebrew)
# port install mle # macOS (MacPorts)
# setup-x86.exe -q -P mle # Cygwin
$ mle # Open blank buffer
$ mle one.c # Edit one.c
$ mle one.c:100 # Edit one.c at line 100
$ mle one.c two.c # Edit one.c and two.c
$ mle -h # Show command line help
As combinações de teclas padrão são intuitivas. Insira o texto normalmente, use as teclas direcionais para se mover, use Ctrl-S
para salvar, Ctrl-O
para abrir, Ctrl-X
para sair.
Pressione F2
para obter ajuda completa.
mle é personalizado por meio de opções de linha de comando. Execute mle -h
para ver todas as opções do cli.
Para definir opções padrão, crie um arquivo rc chamado ~/.mlerc
(ou /etc/mlerc
). O conteúdo do arquivo rc é qualquer número de opções cli separadas por novas linhas. Linhas que começam com ponto e vírgula são interpretadas como comentários.
Se ~/.mlerc
for executável, mle o executa e interpreta o stdout resultante conforme descrito acima. Por exemplo, considere o seguinte trecho de um script executável ~/.mlerc
bash(1):
# Define 'test' kmap
echo '-Ktest,,1'
# M-q: replace grep with git grep if `.git` exists
if [ -d ".git" ]; then
echo '-kcmd_grep,M-q,git grep --color=never -P -i -I -n %s 2>/dev/null'
fi
# Set default kmap
echo '-n test'
Isso substitui o comando grep integrado por git grep
se .git
existir no diretório de trabalho atual.
Os programas a seguir habilitarão ou aprimorarão certos recursos do mle se existirem no PATH
.
Comandos shell arbitrários também podem ser executados via cmd_shell
( Me
por padrão). Se algum texto for selecionado, ele será enviado para o stdin do comando. Qualquer stdout resultante é inserido no buffer de texto.
mle fornece suporte para edição não interativa que pode ser útil para usar o editor como uma ferramenta regular de linha de comando. No modo headless, mle lê stdin em um buffer, aplica uma macro de inicialização, se especificado, e então grava o conteúdo do buffer em stdout. Por exemplo:
$ echo -n hello | mle -M 'test C-e space w o r l d enter' -p test
hello world
Se stdin for um pipe, mle entra automaticamente no modo headless. O modo headless pode ser explicitamente ativado ou desativado com a opção -H
.
Se stdin for um pipe e o modo headless estiver desabilitado via -H0
, mle lê stdin em um novo buffer e então executa normalmente no modo interativo.
mle é extensível através da linguagem de programação Lua. Os scripts são carregados por meio da opção -x
cli. Comandos registrados por scripts podem ser mapeados para chaves normalmente via -k
. Veja uscript.lua
para um exemplo simples.
Há também um branch wren
com suporte a scripts Wren. Esse trabalho está em pausa.
mle faz uso extensivo das seguintes bibliotecas.