Skip to content
Ilia Maslakov edited this page Sep 2, 2026 · 20 revisions

Midnight Commander 6.0.4

English version

Версия 6.0.4 основана на GNU Midnight Commander 4.8.33. Что принес каждый выпуск, перечислено на странице Releases.

Сборка, тестирование и участие в разработке: Coding style, QA testing - о Docker-песочнице, в которой проверяются панельные плагины, и Local build check - о локальном прогоне сборки CI.

Архитектура Lua-расширений описана на странице Доменная модель Lua.

Форк растет за пределами ядра. Содержимое панели может предоставляться динамически загружаемым плагином, а не только локальной файловой системой; скрипты добираются до редактора, панелей, просмотрщика и интерфейса через версионированный ABI, причем сам Lua живет в плагине, а не в ядре; а команды выполняет встроенный терминал вместо прежнего subshell.

Вместе с этим поставляются плагины для архивов, Git, Docker, Kubernetes, MongoDB, S3, FTP, SFTP, Samba и другие. Возможности редактора и просмотрщика файлов также значительно расширены.

Общий вид MC с двумя панелями и открытым встроенным терминалом

Установка

Пакеты для Debian, Ubuntu, Fedora, Arch и macOS приложены к каждому релизу. Для Ubuntu есть PPA ppa:il-smind/mc6, для macOS - тап Homebrew:

brew install blue-panels/tap/mc6

Программа ставится как mc6 рядом с системным mc и держит собственные каталоги: ~/.config/mc6, ~/.local/share/mc6 и ~/.cache/mc6. При первом запуске в каждый новый каталог копируется соответствующий каталог mc, а исходный остается нетронутым.

Панельные плагины

Плагинная панель работает аналогично обычной файловой панели: поддерживает навигацию, просмотр файлов и стандартные операции через F4, F5 и F6.

Плагины могут добавлять:

  • собственные источники данных;
  • пункты в меню панелей и меню выбора диска;
  • настройки и справку;
  • загрузку и сохранение файлов;
  • историю переходов внутри плагина.

Плагин также может передать другому плагину открытый поток с произвольным доступом, а magic.ini направляет файл тому плагину, который его понимает. Именно это позволяет открыть архив на удаленной машине, не скачивая его целиком.

Пользовательские плагины загружаются из ~/.local/lib/mc6/panel-plugins.

Меню панельных плагинов

Скрипты

Поддержка Lua - это плагин, работающий через ABI ядра, поэтому язык не встроен в mc. Скрипт может читать и менять документы редактора транзакциями, давать панели и файловые операции, поставлять просмотрщику генерируемое содержимое, строить диалоги и целые экраны из родных виджетов, запускать процессы и обрабатывать события.

Скрипты включаются и выключаются в диалоге Manage Plugins, а API описан на страницах Lua plugins и Lua API reference. Часть просмотрщиков, описанных ниже, сама написана на Lua.

Структурированные бинарные файлы

Плагин mcstruct показывает двоичный файл деревом именованных полей по текстовому описанию формата (def-файлы STL5), синхронно с шестнадцатеричной полосой, и правит поля на месте. См. руководство mcstruct: запуск, клавиши, язык описаний, готовые def-файлы, настройки и скин.

Работа с архивами

Плагин arcmc позволяет открывать архивы прямо в панели. Он заменил встроенные файловые системы tar и cpio, которых в ядре больше нет.

Полное описание клавиш, настройки внешних архиваторов, extfs-помощников и добавления форматов без пересборки mc - в руководстве arcmc.

Поддерживаются:

  • просмотр архивов и вложенных архивов;
  • добавление и удаление файлов;
  • создание ZIP, 7z, TAR и CPIO;
  • настройки сжатия;
  • пароли и шифрование для форматов, которые это умеют;
  • массовое извлечение;
  • показ хода работы, скорости и оставшегося времени;
  • отмена длительных операций.

При извлечении проверяются абсолютные пути и компоненты .., поэтому содержимое архива не может выйти за пределы выбранного каталога.

Создание архива из отмеченных файлов

Структурированный просмотр данных

В mcview появился древовидный режим для:

  • PNG/JPEG;
  • JSON;
  • YAML;
  • XML;
  • HTML.

Он доступен и в полноэкранном просмотрщике, и в Quick View.

В древовидном режиме можно разворачивать и сворачивать узлы, задавать глубину раскрытия, искать по всей структуре и копировать путь к выбранному элементу в формате, похожем на jq.

Параметр mcview_structured_auto открывает поддерживаемые файлы в структурированном режиме автоматически.

JSON в древовидном режиме

Изображения

PNG, JPEG и другие растровые изображения открываются прямо в просмотрщике. Картинку рисует Chafa символами и цветами терминала, при изменении размера окна она перерисовывается под просмотрщик. Так обрабатывается любой файл с MIME-типом image/*; правило лежит в magic.ini и меняется пользователем.

Рисует Lua-обработчик lua-chafa, ему нужен бинарник chafa. F8 переключает между картинкой и байтами файла.

Там, где терминал умеет sixel, обработчик lua-sixel показывает настоящую картинку вместо символов - и в просмотрщике, и в терминале. Над ней печатается короткое описание изображения, а i переключает на полные свойства.

Изображение PNG в просмотрщике

Другие генерируемые представления

Тот же механизм дает файлу читаемый вид:

  • двоичные файлы ELF разбирает readelf: заголовки, секции, сегменты и динамические данные;
  • классы Java декомпилирует Procyon;
  • таблицы dBase, FoxPro и Clipper открываются постранично, со структурой, карточкой записи и выбором кодировки.

F8 в каждом случае переключает между генерируемым видом и байтами файла.

Просмотр и фильтрация логов

Просмотрщик умеет работать с командами, которые не заканчивают вывод, например:

docker logs -f
journalctl -f

Данные читаются без блокировки интерфейса и обновляются по мере поступления.

Фильтр предлагает:

  • обычный поиск;
  • регулярные выражения;
  • учет регистра;
  • поиск целого слова;
  • выбор кодировки;
  • предварительную проверку выражения.

Фильтр применяется к текущему источнику данных и показывает только совпадающие строки, не создавая второй файл и отдельный процесс.

Живой фильтр по файлу журнала

Настройка и форматирование журналов

Параметры получения журнала меняются прямо в просмотрщике, не закрывая его и не возвращаясь в панель. Можно задать число загружаемых записей, временной интервал, чтение журнала предыдущего запуска контейнера и режим постоянного обновления.

Полученные данные можно передать внешней команде для преобразования или форматирования. Это доступно и для журналов Docker, в диалоге Container logs source, и для журналов Kubernetes, в диалоге Pod logs source.

Без дополнительной обработки структурированные журналы, например записи Serilog в JSON, читать неудобно:

Необработанный поток журнала

В диалоге источника задаются параметры получения журнала и команда обработки в поле Pipe through:

Диалог источника журнала

После обработки данные показываются в более читаемом виде:

Отформатированный поток

ANSI и терминальные записи

В mcview появилась поддержка цветов ANSI и режим воспроизведения терминала.

Поддерживаются обычные и яркие цвета, палитра из 256 цветов, True Color, жирный и подчеркнутый текст, курсив и инверсия.

Терминальный режим обрабатывает управляющие последовательности позиционирования, очистки экрана и областей прокрутки. Это позволяет смотреть записи script(1) и сохраненный вывод полноэкранных программ.

Режимы None, SGR и Term переключаются клавишей F9. Отрисовку цветов ANSI включает и выключает Shift+F9.

Встроенный терминал

Компонент mcterm выполняет команды прямо в файловом менеджере и заменил прежний subshell: набранная в командной строке команда уходит уже запущенной там оболочке, а сама строка показывает ее настоящее приглашение, цвета и курсор. Терминал переключается по Ctrl+O, стартует в каталоге активной панели и следует за ней, отслеживая приглашение, выполняемую команду, код возврата и каталог через OSC 133 и OSC 7.

Он держит ограниченную историю вывода: PgUp/PgDn, Shift со стрелками, Home, End и колесо мыши листают ее, а набор текста возвращает к живому выводу. Вывод можно выделить мышью или Shift со стрелками и скопировать по Ctrl+Insert; Alt+Shift+S оставляет только строки с выделенным текстом, а Alt+S снимает такой фильтр. Ctrl+L уводит экран в историю, Ctrl+Alt+L очищает и историю тоже. Длинные строки переносятся, а при смене ширины окна история переукладывается заново.

Пока терминал занимает весь экран, у него своя строка функциональных клавиш; в руководстве описано, какие клавиши достаются mc, а какие программе внутри.

Эмуляция терминала выполняется собственным движком просмотрщика, без внешней библиотеки.

Изменения в редакторе

Плагины редактора

У редактора есть собственный фреймворк плагинов. Плагин может регистрировать действия, добавлять пункты в меню редактора и обрабатывать клавиши.

Плагины включаются и выключаются для каждого пользователя в диалоге Manage Plugins, оттуда же открываются настройки выбранного плагина.

С редактором поставляются три плагина:

  • проверка орфографии;
  • поддержка etags;
  • навигатор ctags.

Проверка орфографии и поддержка etags вынесены из ядра редактора в плагины. Навигатор ctags новый: он переходит к определениям и объявлениям, ищет символы и файлы, находит ссылки, показывает члены, дополняет символы и хранит историю переходов. Индексы ведутся по репозиториям и пересобираются из плагина.

Пользовательские плагины загружаются из ~/.local/lib/mc6/editor-plugins.

Рисование рамок и таблиц

Редактор сам рисует символы псевдографики. Меню Drawing включает одинарные или двойные линии, Shift+стрелки рисуют от курсора, тем же меню рисование выключается.

Каждая ячейка пересчитывается по сходящимся в ней линиям, поэтому углы, тройники и пересечения получаются сами, а одинарная линия поверх двойной дает смешанный знак. При включенной замене (Insert) текст в ячейках набирается, не сдвигая рамку.

Это Lua-скрипт редактора draw-table, поставляется в lua/scripts/editor/draw-table.

Рисование таблицы в mcedit скриптом draw-table

Фильтр строк

В диалоге поиска (F7) появилось действие Filter: оно прячет все строки, не подходящие под образец, с учетом типа поиска, регистра, целого слова и кодировки из того же диалога. Номера строк остаются исходными, а скрытые участки отмечаются на полосе состояния строк. Alt+S снимает фильтр или возвращает последний, а Alt+Shift+S фильтрует по выделению или по слову под курсором, без диалога.

Кроме того, диалог поиска открывается с уже подставленным выделенным текстом.

Сворачивание кода

mcedit умеет сворачивать многострочные блоки по скобкам {}, [] и ().

Сворачивание доступно:

  • через индикатор на полосе редактора;
  • через меню Command;
  • по Alt+Shift+F.

Команда работает по выделенной области или определяет ближайший охватывающий блок относительно курсора.

Сворачивание и разворачивание блока в mcedit

История отмены

Alt+Shift+U открывает список операций отмены и повтора.

Для каждой группы показаны строка, тип операции, число символов и фрагмент измененного содержимого. Из списка можно перейти к любой доступной точке истории.

Проводник макросов

Alt+Shift+M открывает список записанных макросов.

Для выбранного макроса можно посмотреть последовательность действий, выполнить его, удалить или открыть соответствующее определение в mc.macros.

Сохранение через sudo

Если файл не сохраняется из-за нехватки прав, редактор предлагает повторить операцию через sudo -S tee.

Неудачная попытка не закрывает редактор и не теряет текущий буфер.

Производительность длинных строк

Добавлено кэширование позиций символов внутри длинных строк. Это уменьшает задержки при перемещении, выделении и перерисовке журналов, файлов CSV и минифицированных данных.

Основные плагины

Git

Плагин Git показывает коммиты, ветки и измененные файлы. Для сравнения используется встроенный просмотрщик различий.

Репозитории сохраняются в избранное. При выборе измененного файла вторая панель переходит к соответствующему файлу в рабочем каталоге.

Панель Git с различиями файла

Docker

Плагин Docker дает доступ к:

  • контейнерам;
  • файлам контейнеров;
  • образам;
  • томам;
  • сетям;
  • монтированиям;
  • выполнению команд;
  • журналам.

Поддерживаются локальный профиль и профили по SSH. Для журналов настраиваются число строк, временной диапазон, предыдущий запуск и режим непрерывного чтения.

В комплекте идет скрипт форматирования журналов .NET и Serilog.

Настройка журналов контейнера в просмотрщике

Kubernetes

Плагин Kubernetes работает через kubectl и позволяет смотреть поды, узлы, сервисы и рабочие нагрузки.

Доступны контексты, пространства имен, describe, YAML, exec, удаление ресурсов и просмотр журналов.

MongoDB

Плагин позволяет просматривать подключения, базы, коллекции и документы.

Поддерживаются фильтрация, проекция, сортировка, ограничение числа результатов, постраничное чтение больших коллекций и правка документов.

S3

Плагин S3 умеет загружать, скачивать и удалять объекты, создавать корзины, показывать метаданные и передавать объекты в просмотрщик потоком.

Работает с совместимыми хранилищами, включая MinIO, Ceph и Cloudflare R2.

SQLite

Плагин SQLite открывает базу данных панелью таблиц, столбцов и строк. Только для чтения.

FTP, SFTP и Samba

Плагин FTP поддерживает FTP и FTPS, активный и пассивный режим, прокси, keepalive и выбор версии IP.

Плагин SFTP поддерживает аутентификацию по паролю и по ключу, сжатие, показ хода работы и потоковую передачу файлов.

Плагин Samba дает доступ к серверам SMB и общим ресурсам.

Настройка панелей и клавиш

Пользователь может создавать свои режимы отображения панели и выбирать набор и ширину столбцов.

Alt+Shift+S фильтрует панель по мере набора образца: Quick Search и Quick Filter делят общий образец, а Ctrl+G снимает фильтр. Alt+C спрашивает каталог в мини-статусе панели, а не в диалоге, и предлагает дополнение каталогов над строкой ввода.

Параметр permission_colors красит каждый бит прав своим цветом, как это делает eza, а знак типа файла сохраняет цвет строки.

Добавлены три отдельных диалога.

Key Bindings меняет привязки клавиш и находит конфликты между ними, привязки сгруппированы по областям во вкладки.

Диалог Key Bindings

Learn Keys распознает модификаторы, поэтому Ctrl, Alt и Shift снимаются вместе с основной клавишей.

Learn keys с флажками модификаторов

Key Sniffer показывает escape-последовательность, которую терминал шлет для клавиши, вместе с сочетанием, назначенным действием и кодом клавиши.

Диалог Key Sniffer

Настройки терминала хранятся в:

~/.config/mc6/term/<TERM>

Итог

Форк развивается по пяти направлениям:

  1. Расширяемые панельные плагины и API, позволяющий им передавать данные друг другу.
  2. Скрипты на Lua, где сам язык - плагин, а не часть ядра.
  3. Просмотрщик структурированных данных, двоичных форматов, журналов и терминальных записей.
  4. Редактор: плагины, рисование, сворачивание, фильтрация, история.
  5. Встроенный терминал вместо subshell.

Clone this wiki locally