Skip to content
Ilia Maslakov edited this page Sep 26, 2026 · 4 revisions

M-Commander v6.1.0 (2026-09-26)

English version

Основные изменения

Проект теперь везде называется M-Commander. Основная программа устанавливается как mcommander, редактор, просмотрщик и просмотрщик различий устанавливаются как mcedit6, mview и mdiff. Пакеты дистрибутивов называются mcommander, mcommander-plugins и mcommander-lua, поэтому M-Commander и GNU Midnight Commander могут стоять рядом, не претендуя на привычные имена mc, mcedit, mcview и mcdiff. Каталоги данных и пакетов переименованы соответственно, а существующая пользовательская конфигурация остаётся совместимой. (#234, #298, #299, #300, #301, #302)

Для Markdown-файлов появился собственный отрисованный просмотр на Lua. Он поддерживает заголовки, списки, таблицы, ссылки, сноски, блоки кода с подсветкой синтаксиса M-Commander, выносные формулы и диаграммы Mermaid: блок-схемы, диаграммы последовательностей и классов. Большие документы отрисовываются постепенно, так что первый экран виден до того, как готов весь документ, а у отрисовщика есть собственные настройки вёрстки и диаграмм. (#237, #289, #290, #292, #296, #308, #309, #310)

Новый панельный плагин mcpeek открывает сборки .NET как дерево ссылок, ресурсов, пространств имён, типов и членов. Он показывает декомпилированный C# или IL, переходит по ссылкам на другие сборки, ищет использования, экспортирует исходники в проекты и заново открывает пересобранную сборку, сохраняя текущее место. Сборки открываются из локальных файлов, архивов и удалённых панелей плагинов. (#241)

Просмотрщик стал интерактивным средством чтения текста, а не потоком только для чтения. По тексту можно перемещаться видимым курсором, выделять его клавиатурой или мышью и копировать в буфер обмена; подсветка синтаксиса общая с редактором и работает также в просмотрщике различий. (#238, #245, #248, #264)

В M-Commander появился интерактивный редактор скинов. Скины можно просматривать и менять прямо в программе, включая их класс: 16 цветов, 256 цветов или truecolor. Все поставляемые скины получили секции для mcterm, mctree и mcstruct, добавлены Mashdark и Tokyo Night. (#226, #229, #230, #232)


Возможности

Просмотрщик

  • Отрисовка Markdown. Markdown отображается прямо в просмотрщике: заголовки, выделение, ссылки, списки, таблицы и блоки кода. Поддерживаются сноски и ссылки-определения, блоки кода подсвечиваются теми же правилами, что и в редакторе, а ссылки используют OSC 8, если терминал это умеет. (#237, #289)

  • Mermaid и формулы. Блок-схемы, диаграммы последовательностей и классов рисуются в терминале, с формами узлов, цветными классами и соединителями. Среди окружений выносных формул есть матрицы, cases, массивы и выровненные выражения. (#289, #292, #293, #308)

  • Постепенно генерируемые источники. Обработчики runtime могут отдавать данные просмотрщику через mc.source.generator, понемногу за каждый проход цикла событий. Markdown использует это, чтобы сразу показать первый экран большого или медленного документа и продолжать отрисовку, пока просмотрщик остаётся отзывчивым. (#296)

  • Выделение текста и курсор чтения. В режиме ASCII есть видимый курсор, выделение клавиатурой и мышью, выделение слова и строки и копирование в буфер обмена. При копировании выделенного текста оформление ANSI и nroff отбрасывается. (#238, #248, #264)

  • Подсветка синтаксиса в просмотрщике и просмотрщике различий. Лексический сканер редактора стал общим сервисом синтаксиса. Просмотрщик и просмотрщик различий используют те же правила, сохраняя фон различий и отметки изменённых слов. (#245)

  • Просмотр PDF. lua-pdf извлекает текст и изображения страниц и показывает их в просмотрщике, с выводом через sixel там, где он поддерживается. Страницы остаются текстом, по которому можно искать, а не плоскими картинками; обработчик умеет листать страницы и предлагает несколько раскладок. (#270)

  • Улучшенный вывод nroff. Режим nroff понимает оформление SGR, ссылки OSC 8 и традиционные последовательности забоя (overstrike), в том числе превращает распространённые пары забоя в символы Unicode. (#288)

  • Настройки просмотрщика в меню Options. Перенос строк, подсветка синтаксиса, прокрутка мышью, запоминание позиции, автоматический структурный просмотр и другие настройки просмотрщика получили собственный диалог. Ограничения структурного просмотра по размеру файла и числу узлов тоже настраиваются. (#295, #307)

  • Фильтр в структурном просмотре. F6 в дереве mcstruct открывает тот же диалог Filter, что и в режиме ASCII, и оставляет только узлы, у которых совпадает ключ или значение, раскрывая путь к каждому совпадению. ] и [ переходят по совпадениям, а пустой шаблон или выход из дерева снимает фильтр. (#329)

mcedit

  • Отображение управляющих символов. Управляющие символы можно показывать в нотации ^X или скрывать. Скрытые символы не занимают клетку экрана, а перемещение курсора и удаление обрабатывают их вместе с окружающим видимым текстом. (#223, #233)

  • Буфер обмена с учётом кодировки. Метаданные буфера обмена редактора хранят исходную кодировку и тип блока. При вставке в редактор с другой кодировкой скопированный текст перекодируется через iconv, а не вставляется несовместимыми байтами. (#239)

mcterm

  • Строка команд не смещается. Строка ввода оболочки остаётся на месте командной строки M-Commander, а списки дополнения и прочий вывод оболочки выводятся над ней. (#225)

  • Буфер обмена в командной строке. Ctrl-Insert и Shift-Insert работают одинаково при видимых и скрытых панелях и независимо от того, кто владеет командной строкой — M-Commander или оболочка. Большие вставки требуют подтверждения, а запись в PTY остаётся неблокирующей. (#243)

  • Поиск и фильтр по набранному шаблону. Alt-S ищет по scrollback терминала шаблон, который вводится на месте; Alt+Shift+S фильтрует по нему. Поиск проходит по истории по кругу, при активном фильтре по совпавшим строкам можно перемещаться, а прежний фильтр по выделению остаётся доступен. (#317)

  • Больше команд файлового менеджера при скрытых панелях. F1 открывает справку терминала, F7 создаёт каталог, Shift-F4 создаёт новый файл в каталоге текущей панели. F8 больше не удаляет сквозь скрытый терминал файл панели под ним. (#317)

  • Интеграция с fish. Fish запускается с интеграцией M-Commander через свой ключ -C, а функциональные клавиши остаются доступны программам, запущенным внутри mcterm. (#249, #259)

Панели и файловый менеджер

  • Hotlist хранит адреса плагинов. В Hotlist можно добавлять локальные каталоги, адреса VFS и адреса панельных плагинов — Git, Docker, Kubernetes, архивов. Диалог рассчитан на работу с клавиатуры, поддерживает поиск и не допускает повторов. (#221, #222)

  • Редактируемое пользовательское меню. Пользовательское меню редактирует собственное представление в формате INI. Пункты и вложенные подменю можно добавлять, изменять, удалять, переставлять и импортировать, а команды редактируются в новом многострочном виджете WTextArea. (#220)

  • Слежение за каталогами. Локальные панели могут отслеживать изменения файловой системы через inotify с подавлением дребезга. Скрытые панели помечаются устаревшими и перечитываются, когда их снова показывают; включается новой опцией панелей Watch directories. (#275)

  • Быстрая массовая пометка. Операции, помечающие много файлов, публикуют одно событие выделения на всю операцию, а не по событию на файл. Пометка 10 000 записей по маске занимает доли секунды вместо десятков секунд. (#273)

  • Файловые панели плагинов ведут себя как локальные. Настройки скрытых и резервных файлов, обработка символических ссылок и навигация в стиле lynx одинаково применяются к подходящим панелям плагинов. (#231)

  • Перестроенные меню файлового менеджера. Chmod, Chown, Advanced chown и Chattr перенесены в новое меню Attributes, и меню File теперь помещается в терминал высотой 24 строки. Редактор скинов и пункты Edit extension file и Edit highlighting group file находятся в меню Options, а пункт Edit menu file убран, потому что пользовательское меню редактирует себя само. Щелчок по разделителю меню больше не закрывает меню. (#333)

  • Прокрутка справки колесом мыши. Окно справки прокручивается колесом мыши, в том числе когда указатель находится над ссылкой. (#263)

Справка и документация

  • Справка и man-страницы пишутся в Markdown. Окно справки читает Markdown напрямую: узлы строятся из заголовков, оглавление создаётся автоматически. Man-страницы генерируются из тех же исходников, а файлы справки плагинов и Lua-скриптов тоже переведены на Markdown. (#326)

  • Справка разделена по программам. Каждая программа указывает свой файл справки, у семи плагинов, где справки не было, она появилась, а руководства на всех языках описывают программы такими, какие они сейчас. У mctree и mcstruct появились man-страницы, а в mcommander(1) — раздел ENVIRONMENT, где также объясняется, как включить отладочные журналы. (#330, #332)

Плагины

mcpeek

  • Обозреватель и декомпилятор сборок .NET. Сборки PE/CLI открываются в панели как дерево ссылок, пространств имён, типов и членов. Члены можно смотреть как декомпилированный C# или IL, переходить по ссылкам на другие сборки, искать использования по всем открытым сборкам и экспортировать пространства имён в компилируемые проекты. (#241)

Редактор скинов

  • Интерактивное редактирование скинов. Редактор скинов показывает и меняет цветовые ключи без ручной правки INI и сохраняет объявленный класс скина: 16 цветов, 256 цветов или truecolor. (#226, #230)

  • Полное покрытие поставляемых скинов. Существующие скины теперь задают цвета для mcterm, mctree и mcstruct, добавлены Mashdark и Tokyo Night. (#229, #232)

Lua runtime

  • Общий сервис синтаксиса для скриптов. mc.syntax.scan() открывает Lua доступ к движку синтаксиса редактора и просмотрщика и возвращает определения цветов и диапазоны байтов, полученные по выбранному набору правил. (#290)

  • Настройки Lua-пакетов. Lua-пакет может зарегистрировать диалог настроек через mc.settings(). Менеджер плагинов показывает все Lua-пакеты и открывает либо их настройки, либо исходник; обработчик Markdown использует это для настроек вёрстки и диаграмм. (#310)

arcmc

  • Размеры каталогов внутри архивов. Ctrl-Space считает хранимый размер каталога архива по индексу архива и показывает его в панели. API панельных плагинов получил соответствующую возможность подсчёта размера каталога. (#316)

lua-dbf

  • DBF в быстром просмотре. Файлы DBF показываются во встроенном Quick View как выровненные таблицы, а F3 и Enter по-прежнему открывают интерактивный полноэкранный просмотр таблицы. (#313)

Исправления

mcterm

  • Стартовые последовательности fish больше не меняют атрибуты prompt. Приватные последовательности CSI, например настройка modifyOtherKeys в fish, больше не принимаются за SGR, и prompt не становится внезапно жирным или подчёркнутым. Тем же изменением исправлено деление на ноль в очень маленьких терминалах. (#235)

  • Меню остаются поверх перерисовки терминала. Обновления строки занятости больше не прорисовываются сквозь меню и диалоги поверх mcterm, лишние изменения размера терминала устранены. (#315)

  • Нет мигания, когда оболочка рисует первый prompt. Цвета prompt выделяются до первой отрисовки, строка занятости не показывается до первого prompt, а полная перерисовка использует синхронизированный вывод, если терминал его поддерживает. (#284)

Просмотрщик

  • Режимы отображения больше не переходят между файлами. Состояние подсветки синтаксиса, nroff и терминального вывода корректно сбрасывается при смене источника или режима, в том числе после генерируемых представлений. (#260, #261, #269, #294)

  • Панель кнопок просмотрщика видна сразу. При открытии файла по F3 надписи панели кнопок появляются сразу, а не после первого нажатия клавиши. (#281)

  • Документы nroff учитывают кодировку локали. Man-страницы и документы pod, me и ms форматируются через preconv и nroff -Tutf8 и перекодируются для 8-битных локалей, вместо -Tlatin1 в любой локали. (#287)

  • Картинки PDF без sixel. В терминалах без sixel картинки рисуются символами Chafa, широкие символы измеряются в экранных колонках, а память, занятая ранее просмотренными страницами, ограничена. (#271)

  • Нет зависания на странице PDF с картинкой при изменении размера окна. Ожидание вывода дочернего процесса начинается заново после сигнала, поэтому изменение размера (SIGWINCH) больше не оставляет просмотрщик ждать, пока img2sixel заполняет канал. (#277)

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

  • Каталог панели сохраняется при перечитывании. Обновление файлового менеджера больше не уводит рабочий каталог процесса из каталога текущей панели. (#291)

  • Порядок сортировки плагина временный. При закрытии панели плагина восстанавливаются прежние поле и направление сортировки панели, а предпочтительный порядок плагина не сохраняется. (#303)

  • Командные файлы пользовательского меню доживают до чтения оболочкой. Временные командные скрипты удаляют себя сами после выполнения, а не удаляются M-Commander слишком рано. (#228)

  • Samba возвращает к нужному соединению. При переходе вверх из соединения Samba в корневой список соединений курсор встаёт на это соединение. (#227)

  • Копирование каталогов в панель FTP. Копирование целого дерева каталогов в плагин FTP работает, а не даёт неполный результат. (#279)

  • Понятные ошибки подключения SFTP. При неудачном подключении окно состояния остаётся открытым и различает ошибки сокета, разрешения имени, аутентификации и libssh2; на одно действие делается только одна попытка подключения. (#282)

  • История Git для слитых веток. Ветка без коммитов впереди базы теперь показывает коммиты, слитые из этой ветки, а не пустую историю. (#283)

  • Shell link отправляет актуальные скрипты-помощники. Если на удаленной машине помощник не установлен, туда отправляется встроенная копия, и теперь она собирается из скриптов-помощников при сборке. Девять из восемнадцати встроенных копий отстали, среди них старый get и ls без обработки символических ссылок. Основано на подходе из MidnightCommander/mc#5155 от Phil Krylov. (#276)

Ввод

  • Ctrl-Enter распознаётся с первого нажатия. Ctrl-Enter определяется по флагу ICRNL терминала, а бэкенд ncurses больше не выдаёт каждый Enter за Ctrl-Enter. (#240)

Экран

  • Быстрое выделение цветовых пар. Цветовая пара находится по номеру, а не перебором таблицы пар, поэтому выделение многих пар, например 3840, занимает несколько миллисекунд вместо более чем четырех секунд. (#285)

Внутренние изменения

Сборка и упаковка

  • Perl и Python больше не нужны для сборки. Perl-утилита man2hlp удалена, поскольку справка читает Markdown, а тест формата листинга torrent на Python убран. (#326)

  • Режим запуска выбирается по точному имени программы. Имя программы ищется в таблице имен, поэтому редактор, просмотрщик и просмотр различий запускаются только под установленными именами; имена вроде mcedit2 или mcview-old больше не запускают их случайно. (#297)

Движок синтаксиса

  • Чистка и ускорение общего сканера. Разбор синтаксиса и сопоставление шаблонов переработаны вокруг общего сканера редактора и просмотрщика, поиск ключевых слов и проверка границ ускорены, определения Lua 5.4 обновлены. (#265, #266, #314)

Clone this wiki locally