mle — небольшой, гибкий текстовый редактор на базе терминала, написанный на C.
Работает в Linux, Windows (Cygwin или WSL), FreeBSD, macOS и других системах.
$ 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
Чтобы создать полностью статический двоичный файл, попробуйте make mle_vendor=1 mle_static=1
.
Вы также можете запустить обычный make
для связывания с системными библиотеками вместоvendor vendor/
. Обратите внимание, что для этого необходимо установить следующие пакеты:
uthash-dev
liblua5.4-dev
libpcre2-dev
Для установки в /usr/local/bin
:
$ make install
Для установки в пользовательский каталог укажите prefix
, например:
$ make install prefix=/usr # /usr/bin/mle
mle может быть доступен для установки через менеджер пакетов вашей системы.
# 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
Привязки клавиш по умолчанию интуитивно понятны. Введите текст как обычно, используйте клавиши со стрелками для перемещения, используйте Ctrl-S
для сохранения, Ctrl-O
для открытия, Ctrl-X
для выхода.
Нажмите F2
для получения полной справки.
mle настраивается с помощью параметров командной строки. Запустите mle -h
чтобы просмотреть все параметры командной строки.
Чтобы установить параметры по умолчанию, создайте rc-файл с именем ~/.mlerc
(или /etc/mlerc
). Содержимое файла rc представляет собой любое количество параметров cli, разделенных символами новой строки. Строки, начинающиеся с точки с запятой, интерпретируются как комментарии.
Если ~/.mlerc
является исполняемым файлом, mle выполняет его и интерпретирует полученный стандартный вывод, как описано выше. Например, рассмотрим следующий фрагмент исполняемого сценария ~/.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'
Это переопределяет встроенную команду grep с помощью git grep
если .git
существует в текущем рабочем каталоге.
Следующие программы активируют или улучшают определенные функции mle, если они существуют в PATH
.
Произвольные команды оболочки также можно запускать через cmd_shell
(по умолчанию Me
). Если какой-либо текст выделен, он отправляется на стандартный ввод команды. Любой результирующий стандартный вывод вставляется в текстовый буфер.
mle обеспечивает поддержку неинтерактивного редактирования, что может быть полезно при использовании редактора в качестве обычного инструмента командной строки. В безголовом режиме mle считывает стандартный ввод в буфер, применяет макрос запуска, если он указан, а затем записывает содержимое буфера в стандартный вывод. Например:
$ echo -n hello | mle -M 'test C-e space w o r l d enter' -p test
hello world
Если stdin является каналом, mle автоматически переходит в безгласный режим. Безголовый режим можно явно включить или отключить с помощью опции -H
.
Если стандартный ввод является каналом и безголовый режим отключен с помощью -H0
, mle считывает стандартный ввод в новый буфер, а затем работает как обычно в интерактивном режиме.
mle расширяется с помощью языка программирования Lua. Скрипты загружаются с помощью опции -x
cli. Команды, зарегистрированные скриптами, можно сопоставить с клавишами как обычно с помощью -k
. См. простой пример на uscript.lua
.
Существует также ветка wren
с поддержкой сценариев Wren. Эта работа приостановлена.
mle широко использует следующие библиотеки.