mle ist ein kleiner, flexibler, terminalbasierter Texteditor, der in C geschrieben ist.
Läuft unter Linux, Windows (Cygwin oder WSL), FreeBSD, macOS und mehr.
$ 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
Um eine vollständig statische Binärdatei zu erstellen, versuchen Sie make mle_vendor=1 mle_static=1
.
Sie können auch einfach make
ausführen, um eine Verknüpfung mit Systembibliotheken anstelle von vendor/
herzustellen. Beachten Sie, dass hierfür die folgenden Pakete installiert sein müssen:
uthash-dev
liblua5.4-dev
libpcre2-dev
So installieren Sie nach /usr/local/bin
:
$ make install
Um in einem benutzerdefinierten Verzeichnis zu installieren, geben Sie prefix
an, z. B.:
$ make install prefix=/usr # /usr/bin/mle
mle kann möglicherweise über den Paketmanager Ihres Systems installiert werden.
# 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
Die Standardtastenbelegungen sind intuitiv. Geben Sie Text wie gewohnt ein, verwenden Sie die Richtungstasten zum Navigieren, verwenden Sie Ctrl-S
zum Speichern, Ctrl-O
zum Öffnen und Ctrl-X
zum Beenden.
Drücken Sie F2
um die vollständige Hilfe zu erhalten.
mle wird über Befehlszeilenoptionen angepasst. Führen Sie mle -h
aus, um alle CLI-Optionen anzuzeigen.
Um Standardoptionen festzulegen, erstellen Sie eine RC-Datei mit dem Namen ~/.mlerc
(oder /etc/mlerc
). Der Inhalt der RC-Datei besteht aus einer beliebigen Anzahl von CLI-Optionen, die durch Zeilenumbrüche getrennt sind. Zeilen, die mit einem Semikolon beginnen, werden als Kommentare interpretiert.
Wenn ~/.mlerc
ausführbar ist, führt mle es aus und interpretiert die resultierende Standardausgabe wie oben beschrieben. Betrachten Sie beispielsweise den folgenden Ausschnitt aus einem ausführbaren ~/.mlerc
bash(1)-Skript:
# 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'
Dies überschreibt den integrierten grep-Befehl mit git grep
wenn .git
im aktuellen Arbeitsverzeichnis vorhanden ist.
Die folgenden Programme aktivieren oder verbessern bestimmte Funktionen von mle, sofern sie in PATH
vorhanden sind.
Beliebige Shell-Befehle können auch über cmd_shell
(standardmäßig Me
) ausgeführt werden. Wenn Text ausgewählt ist, wird er an stdin des Befehls gesendet. Alle resultierenden Standardausgaben werden in den Textpuffer eingefügt.
mle bietet Unterstützung für nicht interaktives Bearbeiten, was für die Verwendung des Editors als normales Befehlszeilentool nützlich sein kann. Im Headless-Modus liest mle stdin in einen Puffer, wendet bei Angabe ein Startmakro an und schreibt dann den Pufferinhalt in stdout. Zum Beispiel:
$ echo -n hello | mle -M 'test C-e space w o r l d enter' -p test
hello world
Wenn stdin eine Pipe ist, wechselt mle automatisch in den Headless-Modus. Der Headless-Modus kann mit der Option -H
explizit aktiviert oder deaktiviert werden.
Wenn stdin eine Pipe ist und der Headless-Modus über -H0
deaktiviert ist, liest mle stdin in einen neuen Puffer und wird dann wie gewohnt im interaktiven Modus ausgeführt.
mle ist über die Programmiersprache Lua erweiterbar. Skripte werden über die CLI-Option -x
geladen. Von Skripten registrierte Befehle können wie gewohnt über -k
auf Tasten abgebildet werden. Ein einfaches Beispiel finden Sie unter uscript.lua
.
Es gibt auch einen wren
Zweig mit Wren-Skriptunterstützung. Diese Arbeit ruht.
mle nutzt in großem Umfang die folgenden Bibliotheken.