mcedit6(1)
| MCEDIT6(1) | M-Commander | MCEDIT6(1) |
НАИМЕНОВАНИЕ
mcedit6 - встроенный редактор файлов M-Commander.
СИНТАКСИС
mcedit6 [-bcCdfhstVx?] [+строка] [файл1] [файл2] ...
ОПИСАНИЕ
mcedit6 - это ссылка на mcommander, основной исполняемый файл M-Commander. Запуск M-Commander под этим именем открывает встроенный редактор и загружает в него файлы, указанные в командной строке. Ключи командной строки описаны в mcommander(1).
ОПЦИИ
- +номер
- Перейти к строке с этим номером (между знаком + и числом не должно быть пробела). Номеров можно указать несколько, но взят будет последний, и только для первого файла.
- -b
- Черно-белый режим отображения.
- -c
- Цветной режим ANSI на терминалах, которые не сообщают о поддержке цвета.
- -d
- Отключить поддержку мыши.
- -h, -?, --help
- Показать ключи и то, что они делают.
- -f
- Показать вкомпилированные пути поиска файлов M-Commander.
- -S имя, --skin=имя
- Задать имя скина в командной строке. Подробнее смотрите раздел Скины в mcommander(1).
- -s
- Работа на медленном терминале: экран перерисовывается реже.
- -t
- Брать сведения о терминале из termcap, а не из terminfo. Ключ имеет смысл только тогда, когда программа собрана с библиотекой S-Lang и поддержкой terminfo.
- -V
- Показать версию программы.
- -x
- Включить режим xterm. Применяется на терминалах, которые умеют то же, что и xterm: два режима экрана и последовательности мыши.
ВОЗМОЖНОСТИ
Встроенный редактор - это полноценный оконный редактор. В нем можно править несколько файлов сразу. Файл больше, чем editor_filesize_threshold (по умолчанию 64 Мбайта), открывается после вопроса, а не отвергается. Двоичные файлы править можно. Поддерживаются: копирование, перемещение, удаление, вырезание и вставка блоков; отмена операций клавиша за клавишей; выпадающие меню; вставка файла; макрокоманды; поиск и замена по регулярным выражениям; выделение текста клавишами со стрелками и Shift (если терминал их различает); переключение вставки и замены; автоотступ; настраиваемый размер табуляции; подсветка синтаксиса для разных типов файлов; передача блока текста через команду оболочки, такую как indent или ispell.
Каждый файл открывается в своем окне на весь экран. Окнами в mcedit6 управляют так же, как в других многооконных программах: двойной щелчок по заголовку разворачивает окно на весь экран или возвращает прежний размер и положение; нажатие левой кнопкой на заголовке и перетаскивание двигают окно; нажатие на правом нижнем углу рамки и перетаскивание меняют размер. То же самое делают пункты меню "Окно".
КЛАВИШИ
Редактор прост и не требует обучения. Выпадающее меню открывает F9. Про остальные клавиши говорят само меню и надписи на строке кнопок.
Кроме того, Shift со стрелками выделяет текст (если терминал их различает). Ctrl-Ins копирует в файл ~/.local/share/mc6/mcedit/mcedit.clip, Shift-Ins вставляет из него, Shift-Del вырезает в него, а Ctrl-Del удаляет выделенный текст. На некоторых терминалах работает и выделение мышью. Чтобы воспользоваться обычной поддержкой мыши терминала, держите Shift. Учтите, что буфер обмена терминала не общий с буфером mcedit6.
Клавиша завершения (обычно Meta-Tab или Escape Tab) дополняет слово под курсором словами из этого же файла.
У этих команд есть клавиши, но нет своего пункта меню: Meta-t сортирует выделенные строки, Meta-u выполняет команду оболочки и вставляет ее вывод, Meta-p форматирует абзац, в котором стоит курсор, Ctrl-q вставляет следующую клавишу или код вида U+XXXX как есть, Meta-m отправляет файл почтой, а Ctrl-p проверяет правописание слова под курсором. Первые пять - это Lua-скрипты редактора и пропадают вместе с ними; последняя принадлежит плагину проверки правописания, у которого, как и у других плагинов редактора с такой возможностью, есть пункт в меню "Плагины".
Кнопка Фильтр диалога поиска (F7) скрывает все строки, в которых нет искомой строки, с теми же настройками типа поиска, регистра и целых слов, что и в самом диалоге. Номера строк остаются исходными. Набор скрытых строк фиксируется в момент нажатия кнопки: при редактировании условие заново не проверяется, поэтому разрезанные, склеенные и вновь набранные строки остаются видимыми. Meta-s снимает фильтр, а нажатая снова накладывает последний поиск как фильтр.
МАКРОКОМАНДЫ
Чтобы задать макрос, нажмите Ctrl-R и наберите те клавиши, которые должны выполняться. Нажмите Ctrl-R ещё раз, когда закончите. Макрос можно назначить на любую клавишу, нажав ее. Макрос выполняется при нажатии назначенной клавиши.
Макрокоманды хранятся в секции [editor] файла ~/.local/share/mc6/macros.
На любую клавишу можно назначить и внешний скрипт (фильтр), поправив файл macros так:
[editor] ctrl-W=ExecuteScript:25;
Это значит, что ctrl-W запускает действие ExecuteScript(25), которое редактор переводит в выполнение скрипта оболочки ~/.local/share/mc6/mcedit/macros.d/macro.25.sh.
Внешние скрипты лежат в каталоге ~/.local/share/mc6/mcedit/macros.d/ и называются macro.XXXX.sh, где XXXX - число от 0 до 9999. Формат скрипта подробно описан в разделе Редактирование файлов меню.
В определении макроса можно пользоваться следующими директивами и подстановками:
- #silent
- С этой директивой скрипт запускается без интерактивной оболочки.
- %c
- Номер колонки, в которой стоит курсор.
- %i
- Отступ из пробелов, равный колонке курсора.
- %y
- Тип синтаксиса текущего файла.
- %b
- Имя файла блока.
- %f
- Имя текущего файла.
- %n
- Имя текущего файла без расширения.
- %x
- Расширение имени текущего файла.
- %d
- Имя текущего каталога.
- %F
- Текущий файл в пассивной панели.
- %D
- Имя каталога пассивной панели.
- %t
- Отмеченные файлы.
- %T
- Отмеченные файлы в пассивной панели.
- %v и %V
- Как %t и %T, но подставляются полные имена отмеченных файлов.
- %u и %U
- Как %t и %T, но вдобавок отметка с файлов снимается. Такую подстановку можно использовать только один раз на пункт файла меню или файла расширений, потому что в следующий раз отмеченных файлов уже не будет.
- %s и %S
- Выбранные файлы: отмеченные, если они есть, иначе текущий файл.
Эти файлы можно править по своему усмотрению. Вот пример внешнего скрипта:
l comment selection
TMPFILE=`mktemp ${MC_TMPDIR:-/tmp}/up.XXXXXX` || exit 1
echo #if 0 > $TMPFILE
cat %b >> $TMPFILE
echo #endif >> $TMPFILE
cat $TMPFILE > %b
rm -f $TMPFILE
Если какие-то клавиши не работают, воспользуйтесь пунктом Распознавание клавиш меню Настройки.
НАВИГАЦИЯ ПО КОДУ
mcedit6 умеет ходить по коду с помощью файлов тегов, созданных командами etags или ctags. Без файла TAGS навигация не работает. Например, для exuberant-ctags и языка C команда будет такой:
ctags -e --language-force=C -R ./
Meta-Enter открывает список для выбора того, что стоит под курсором (курсор должен стоять в конце слова). Теги читает плагин etags, так что при выключенном плагине клавиша ничего не делает.
Meta-Minus (минус - это знак "-") переходит к предыдущей функции в списке навигации, как кнопка "Назад" в браузере.
Meta-Plus (плюс - это знак "+") переходит к следующей функции в списке навигации, как кнопка "Вперед" в браузере.
ПОДСВЕТКА СИНТАКСИСА
mcedit6 умеет подсвечивать синтаксис: ключевые слова и контексты (комментарии C, строковые константы и прочее) показываются разными цветами. Ниже описан формат файла ~/.local/share/mc6/syntax/Syntax. Если этого файла нет, берется общесистемный /usr/share/mcommander/syntax/Syntax. Файл ~/.local/share/mc6/syntax/Syntax перечитывается при открытии каждого нового файла в редакторе. В нем лежат правила подсветки, по одному в строке, и каждое говорит, какие слова каким цветом подсвечивать.
Файл разбит на разделы, каждый из которых начинается со строки с командой file. Обычно разделы выносят в отдельные файлы командой include.
У команды file три аргумента. Первый - регулярное выражение, которое проверяется на имени файла и решает, относится ли раздел к этому файлу. Второй - описание типа файла; оно используется в cooledit, а будущие версии mcedit6 тоже могут им воспользоваться. Третий, необязательный, - регулярное выражение для первой строки текста файла. Правила раздела применяются, если совпало имя файла или первая строка.
Раздел заканчивается там, где начинается следующий. Каждый раздел разбит на контексты, а каждый контекст содержит правила. Контекст - это та область текста, к которой относится определенный набор правил. Например, текст внутри комментария C (между /* и */) имеет свой цвет. Это контекст, и правил внутри него нет, потому что внутри комментария C подсвечивать, как правило, нечего.
Простейший раздел для программы на C выглядит так:
file .\*\\.c C\sProgram\sFile (#include|/\\\*) wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ # цвета по умолчанию define comment brown context default
keyword whole if yellow
keyword whole else yellow
keyword whole for yellow
keyword whole while yellow
keyword whole do yellow
keyword whole switch yellow
keyword whole case yellow
keyword whole static yellow
keyword whole extern yellow
keyword { brightcyan
keyword } brightcyan
keyword '*' green # комментарии C context /\* \*/ comment # директивы препроцессора C context linestart # \n red
keyword \\\n brightred # строковые константы C context " " green
keyword %d brightgreen
keyword %s brightgreen
keyword %c brightgreen
keyword \\" brightgreen
Каждый контекст начинается строкой вида:
context [exclusive] [whole|wholeright|wholeleft] [linestart] разделитель [linestart] разделитель [цвет текста] [цвет фона] [атрибуты]
Первый контекст - исключение. Он должен начинаться командой
context default [цвет текста] [цвет фона] [атрибуты]
иначе mcedit6 сообщит об ошибке. Параметр linestart требует, чтобы разделитель стоял в начале строки. Параметр whole требует, чтобы разделитель был целым словом. Чтобы слово начиналось на границе слова только слева, есть параметр wholeleft, а чтобы оно так же заканчивалось справа - wholeright.
Набор символов, из которых состоит целое слово, можно поменять в любом месте файла командой wholechars. Левый и правый наборы задаются по отдельности:
wholechars [left|right] символы
Параметр exclusive подсвечивает текст между разделителями, но не сами разделители.
Каждое правило - это строка вида:
keyword [whole|wholeright|wholeleft] [linestart] строка цвет текста [цвет фона] [атрибуты]
Строки контекстов и ключевых слов разбираются, поэтому табуляцию и пробел можно записать как \t и \s. Перевод строки и обратная косая черта - это \n и \. Пробельные символы служат разделителями, поэтому как есть они не годятся. Звездочку нужно писать как \*, потому что сама * - это шаблон, который совпадает с любым числом символов. Например,
keyword '*' green
красит все односимвольные константы C зеленым. Можно написать и
keyword "*" green
для строковых констант, но такая строка не сможет переходить через перевод строки. Шаблон можно использовать и в разделителях контекста, но не первым и не последним символом.
Важна строка
keyword \\\n brightgreen
Она задает ключевое слово из обратной косой черты и перевода строки. Ключевые слова проверяются раньше разделителей контекста, поэтому оно не дает контексту закончиться в конце строки, оканчивающейся обратной косой чертой, и директива препроцессора C может продолжаться на нескольких строках.
Возможные цвета: black, gray, red, brightred, green, brightgreen, brown, yellow, blue, brightblue, magenta, brightmagenta, cyan, brightcyan, lightgray и white. Особое слово "default" означает цвет терминала по умолчанию. Другое особое слово, "base", означает основные цвета M-Commander; оно удобно, когда нужно задать атрибуты, не меняя цвета фона. Если доступны 256 цветов, их можно задать как color16 - color255, как rgb000 - rgb555 или как gray0 - gray23.
Если файл синтаксиса общий с cooledit, цвета для mcedit6 и для cooledit можно задать по отдельности через косую черту:
keyword #include red/Orange
mcedit6 берет цвет до косой черты. Цвета, которые понимает cooledit, описаны в cooledit(1).
Атрибуты - это bold, italic, underline, reverse и blink; если нужно несколько, они соединяются знаком плюс.
Комментарий можно написать отдельной строкой, начав ее со знака решетки (#).
Для языка, в котором регистр не важен, в начале файла синтаксиса нужна директива caseinsensitive.
Из-за простоты реализации некоторые тонкости разбираются неверно, но это мелкие неудобства. В целом же этими простыми правилами описывается довольно широкий круг непростых случаев. Полезно заглянуть в файл синтаксиса и посмотреть, что можно сделать с некоторой фантазией. Поддержки регулярных выражений здесь нет и не будет: сделать ее невозможно.
Особый режим line-local предназначен для обычного текста. Он сбрасывается на каждом переводе строки и на границе экрана и разбирает только показываемый текст. В нем есть number макс цвет для десятичных чисел длиной до макс цифр, string кавычка цвет для строк в одинарных или двойных кавычках и symbols символы цвет для отдельно раскрашиваемых знаков препинания.
Полезный совет: работайте с тем, что можно сделать, а не пытайтесь сделать то, с чем эта реализация не справится. И помните, что подсветка нужна не для красоты кода, а для того, чтобы в нем было меньше ошибок.
Подсветку синтаксиса включает и выключает Ctrl-s.
Встроенный редактор
Встроенный редактор - это полноэкранный редактор со всеми обычными возможностями. Файл больше, чем editor_filesize_threshold (по умолчанию 64 Мбайта), открывается после вопроса. Двоичные файлы редактировать можно. Редактор вызывается клавишей F4, если в инициализационном файле установлена опция use_internal_edit.
Поддерживаются: копирование, перемещение, удаление, вырезание и вставка блоков; отмена операций клавиша за клавишей; выпадающие меню; вставка файла; макрокоманды; поиск и замена по регулярным выражениям; выделение текста клавишами со стрелками и Shift (если терминал их различает); переключение вставки и замены; перенос слов; автоотступ; настраиваемый размер табуляции; подсветка синтаксиса для разных типов файлов; передача блока текста через команду оболочки, такую как indent или ispell.
- Разделы:
- Клавиши
Макрокоманды
Опции в ini-файле для редактора
Настройки редактора
Редактор прост и не требует обучения: какая клавиша что делает, видно в выпадающих меню. Кроме них есть следующее. Клавиши со стрелками с Shift выделяют текст. C-Ins копирует в файл обмена ~/.local/share/mc6/mcedit/mcedit.clip, S-Ins вставляет из него, S-Del вырезает в него, а C-Del удаляет выделенный текст. Работает и выделение мышью, причём если при протягивании держать Shift, то выделение делает сам терминал, как обычно.
Чтобы определить макрос, нажмите C-R и наберите те нажатия клавиш, которые должны выполняться. Нажмите C-R ещё раз, когда закончите, и свяжите макрос с клавишей, нажав её. Макрос вызывается этой клавишей, а также сочетанием C-A и назначенной клавиши. Макросы хранятся в секции [editor] файла ~/.local/share/mc6/macros, и удаляются удалением своей строки в нём; как макрос вызывает свой собственный скрипт, сказано в разделе Макрокоманды.
Кодировку показываемого текста меняет Alt-e (M-e). Перекодирование идёт из выбранной кодовой страницы в системную. Чтобы отменить перекодирование, выберите в диалоге выбора кодировки "<No translation>".
Кнопка Фильтр в диалоге поиска (F7) скрывает все строки, в которых нет искомой строки; используются те же настройки типа поиска, регистра и целых слов, что и при поиске. Номера строк остаются исходными, а в колонке состояния строк отмечается каждый скрытый участок. Набор скрытых строк фиксируется в момент нажатия кнопки: при редактировании условие заново не проверяется, поэтому видимая строка, разрезанная или склеенная с соседней, остаётся видимой, и набранные после этого строки тоже остаются видимыми, даже если под условие не подходят. M-s снимает фильтр; повторное нажатие снова накладывает последний поиск как фильтр. Пункт "Развернуть всё" в меню "Команда" тоже снимает фильтр.
Настройки редактора
Настройки встроенного редактора. Их открывает меню Настройки самого редактора, а также пункт Настройки редактора меню "Настройки" файлового менеджера. Они записываются в ini-файл под теми же именами, что описаны в разделе Опции в ini-файле для редактора.
Режим переноса строк. Выключен, динамическое форматирование абзаца или перенос "как на пишущей машинке", который разрывает строку по заданной длине прямо при наборе.
Имитация неполных табуляций. Между текстом и левым полем перемещение и отступ идут на половину табуляции и заполняются пробелами, а в остальных местах табуляция остаётся обычной.
Забой (backspace) на табуляциях. Одно нажатие Backspace удаляет весь отступ до левого поля, если между курсором и полем нет текста.
Заполнять табуляции пробелами. Вместо символа табуляции вставляются пробелы до следующей позиции табуляции.
Ширина табуляции. Ширина, которую занимает символ табуляции. По умолчанию 8; другие редакторы и программы просмотра тоже считают её равной 8.
Автоотступ по Enter. Новая строка начинается с тем же отступом, что и строка выше.
Подтверждать запись файла. Перед записью файла выдаётся запрос.
Запоминать позицию в файле. Файл открывается на том месте, где его оставили в прошлый раз.
Показывать пробелы в конце строк. Пробелы в конце строки отмечаются.
Показывать табуляции. Символы табуляции отмечаются.
Показывать управляющие символы. Управляющие символы текста печатаются, а не скрываются.
Подсветка синтаксиса. Текст раскрашивается по правилам синтаксиса для его типа файла.
Курсор после вставленного блока. После вставки блока курсор остаётся в его конце, а не в начале.
Постоянные блоки. Выделение сохраняется при перемещении курсора, а не снимается.
Курсор за концом строки. Курсор может стоять за последним символом строки.
Групповая отмена. Одна отмена возвращает целую серию однотипных изменений, а не одно нажатие.
Длина строки для переноса. Колонка, по которой режимы переноса разрывают строку. По умолчанию 72.
Сохранить как
Имя, под которым записать файл, и вид переводов строки: как в файле, Unix (LF), Windows и DOS (CR LF) или Macintosh (CR). Выбор действует на эту запись; файл сохраняет то, что ему задали.
Режим сохранения
Как записывается файл - те же три режима, что принимает параметр editor_option_save_mode:
- Быстрое сохранение
- Сразу писать поверх файла. Быстро, но сбой в середине оставляет файл записанным наполовину.
- Безопасное сохранение
- Сначала писать во временный файл и переименовать его поверх исходного, когда он записан целиком, поэтому сбой не портит оригинал.
- Создавать резервные копии с расширением
- Безопасное сохранение, и оригинал сохраняется под своим именем с добавленным расширением из строки ввода, по умолчанию "~". Вторая запись заменяет и резервную копию.
- Проверять перевод строки POSIX
- Спрашивать о недостающем переводе строки в конце файла перед записью.
Обозреватель макросов
Записанные макросы, с клавишей, на которую отвечает каждый, и тем, что он делает. Кнопки:
- Запустить
- Проиграть макрос, на котором стоит курсор.
- Удалить
- Удалить его после вопроса.
- Правка файла
- Открыть файл, в котором живут макросы; о нём говорит раздел Macros английского руководства.
Открытые файлы
Файлы, открытые в редакторе, по одному в строке. Enter переходит к файлу, на котором стоит курсор, Esc оставляет показанный файл. Тот же список открывает пункт Список... меню "Окно".
Сведения о плагинах
Плагины, которые загрузил редактор: имя, включён ли он, что предоставляет и что делает. Это список для просмотра; выключить плагин и открыть его настройки можно в диалоге Управление плагинами файлового менеджера.
Опции в ini-файле для редактора
В данном разделе кратко описаны опции ini-файла, относящиеся к редактору. Опции записываются в секцию [Midnight-Commander].
- editor_wordcompletion_collect_entire_file
- При автодополнении для сбора похожих слов слов просматривать весь файл(1) или только от начала до курсора (0)
ФАЙЛЫ
- /usr/share/mcommander/help/mcommander.md
- Файл помощи программы.
- /usr/share/mcommander/mc.ini
- Общесистемные установки M-Commander по умолчанию; используются только тогда, когда у пользователя нет своего файла ~/.config/mc6/ini.
- /usr/share/mcommander/defaults.ini
- Общие установки M-Commander. Они действуют на всех пользователей, независимо от того, есть у них ~/.config/mc6/ini или нет.
- /usr/share/mcommander/syntax/*
- Общесистемные файлы синтаксиса mcedit6; используются только тогда, когда у пользователя нет своего такого файла в ~/.local/share/mc6/syntax/.
- ~/.config/mc6/ini
- Собственные установки пользователя. Если этот файл есть, установки читаются из него, а не из общесистемного файла.
- ~/.local/share/mc6/mcedit6/
- Собственный каталог пользователя, в котором обрабатываются и сохраняются команды над блоками и лежат его файлы синтаксиса.
Лицензия
Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Для получения подробных сведений смотрите Универсальную Общественную Лицензию GNU.
Обновление версий
Последние версии программы M-Commander можно найти на сайте https://github.com/blue-panels/mcommander/releases .
Другие источники
mcommander(1), mview(1), mdiff(1).
Недоработки
О найденных ошибках сообщайте на https://github.com/blue-panels/mcommander/issues .
| сентября 2026 | MCommander unknown |
