mle est un petit éditeur de texte flexible, basé sur un terminal, écrit en C.
Fonctionne sous Linux, Windows (Cygwin ou WSL), FreeBSD, macOS, etc.
$ 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
Pour créer un binaire complètement statique, essayez make mle_vendor=1 mle_static=1
.
Vous pouvez également exécuter plain make
pour établir un lien avec les bibliothèques système au lieu de vendor/
. Notez que cela nécessite l'installation des packages suivants :
uthash-dev
liblua5.4-dev
libpcre2-dev
Pour installer dans /usr/local/bin
:
$ make install
Pour installer dans un répertoire personnalisé, fournissez prefix
, par exemple :
$ make install prefix=/usr # /usr/bin/mle
mle peut être disponible pour installation via le gestionnaire de packages de votre système.
# 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
Les raccourcis clavier par défaut sont intuitifs. Saisissez le texte normalement, utilisez les touches directionnelles pour vous déplacer, utilisez Ctrl-S
pour enregistrer, Ctrl-O
pour ouvrir, Ctrl-X
pour quitter.
Appuyez sur F2
pour obtenir une aide complète.
mle est personnalisé via les options de ligne de commande. Exécutez mle -h
pour afficher toutes les options cli.
Pour définir les options par défaut, créez un fichier rc nommé ~/.mlerc
(ou /etc/mlerc
). Le contenu du fichier rc est constitué d'un nombre quelconque d'options cli séparées par des nouvelles lignes. Les lignes commençant par un point-virgule sont interprétées comme des commentaires.
Si ~/.mlerc
est exécutable, mle l'exécute et interprète la sortie standard résultante comme décrit ci-dessus. Par exemple, considérons l'extrait suivant d'un script exécutable ~/.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'
Cela remplace la commande grep intégrée avec git grep
si .git
existe dans le répertoire de travail actuel.
Les programmes suivants activeront ou amélioreront certaines fonctionnalités de mle si elles existent dans PATH
.
Des commandes shell arbitraires peuvent également être exécutées via cmd_shell
( Me
par défaut). Si un texte est sélectionné, il est envoyé au stdin de la commande. Toute sortie standard résultante est insérée dans le tampon de texte.
mle prend en charge l'édition non interactive, ce qui peut être utile pour utiliser l'éditeur comme outil de ligne de commande standard. En mode sans tête, mle lit stdin dans un tampon, applique une macro de démarrage si spécifié, puis écrit le contenu du tampon sur stdout. Par exemple:
$ echo -n hello | mle -M 'test C-e space w o r l d enter' -p test
hello world
Si stdin est un tube, mle passe automatiquement en mode sans tête. Le mode sans tête peut être explicitement activé ou désactivé avec l'option -H
.
Si stdin est un tube et que le mode sans tête est désactivé via -H0
, mle lit stdin dans un nouveau tampon puis s'exécute normalement en mode interactif.
mle est extensible via le langage de programmation Lua. Les scripts sont chargés via l'option -x
cli. Les commandes enregistrées par les scripts peuvent être mappées aux clés comme d'habitude via -k
. Voir uscript.lua
pour un exemple simple.
Il existe également une branche wren
avec prise en charge des scripts Wren. Ce travail est en pause.
mle utilise largement les bibliothèques suivantes.