Mcedit как пользоваться linux

Обновлено: 04.07.2024

13 сен 2016, 00:10

Предисловие.

За десятки лет существования компьютеров многое поменялось. Вечно лишь одно - часто или нет, но мы вынуждены выполнять различные операции с файлами и папками. И со времен когда еще не было графических рабочих столов, а лишь голая консоль с приглашением ввода, лучшим и незаменимым средством для этого служит двухпанельный интерфейс файловых менеджеров.

Кидайте в меня помидорами любители проводника Windows, топчите ногами привыкшие к *вставить имя файлового менеджера* в своем окружении рабочего стола, сегодня вы узрите короля работы с файлами - Midnight Commander.

Почему именно MC, а не любой другой Commander которых в линуксе как грязи и они заточены не на консоль, а на графическое окружение? Именно поэтому! Midnight'у чхать на ваши Иксы, он способен работать как в консоли вашего любимого окружения, так и просто в голом терминале без графической среды. Отсюда и ряд неочевидных возможностей: способность манипулировать файлами и данными в них через ssh или любой другой удаленный доступ, возможность использовать его в режиме восстановления системы для редактирования конфигов итд, возможность тесно взаимодействовать с консолью не выходя из файлового менеджера и много еще чего!

Установка

В линукс минт наш любимый Midnight Commander доступен из репозиториев. Описывать подробно процесс установки не вижу смысла, так как он элементарен, но если вы совсем дуб, объясняю: Меню -> Менеджер программ -> в поиске забиваем mc -> дважды жмакаем на нем и в открывшемся окне смело и дерзко давим кнопку Установить. Для любителей строчить команды apt-get в консоли - пакет называется mc

Где же ты?

Чтобы открыть МС просто открываем терминал и вводим mc. Можно сделать это и через Меню -> администрирование -> Мidnight Сommander, но это не так круто, потому что после закрытия МС схлопнется и консоль, что не всегда желательно.

Базовая настройка консоли

Если вы правильный парень, и открываете МС из консоли, неплохо было бы провести небольшой тюнинг последней. Обычно консоли перехватывают горячие клавишы вроде F10 или нажатия Alt. Это стоит убрать из настроек. Тот же F10 в МС к примеру закрывает менеджер.

Базовая настройка MC

На вкус и цвет фломастеры разные. Я лишь покажу те вещи, которые делаю сам после первого запуска МС. Благо их немного F9 в МС вызывает меню.

1 - по умолчанию МС показывает имя файла, его размер и права доступа. Стоит добавить еще владельца файла и группу. Это часто бывает полезно знать и может помочь избежать недоразумений с доступом.

- F9 -> левая или правая панель -> формат списка -> определенный пользователем -> дописываем в конец | owner | group.
должна получиться такая строка half type name | size | perm | owner | group

Проделываем эту процедуру для левой и правой панелей. Теперь мы знаем не только права доступа, но и владельцев. Для наглядности небольшой скрин ниже.

2 - по умолчанию навигация по файловой системе не такая удобная. Давайте сделаем ее офигенной! Для того чтобы перемещаться из папки нажатием стрелки влево, в папку нажатием стрелки вправо, а листать список вверх вниз стрелочками вверх вниз достаточно добавить одну опцию. Это позволит вам листать файловую систему одной рукой, другой попивая кофе

- F9 -> настройки -> настройки панелей -> навигация в стиле lynx -> выделяем (нажатие пробела снимает или убирает крестик)

3 - сохраняем наши настройки. F9 -> настройки -> сохранить настройки -> [Enter]

Этого уже достаточно чтобы работать в 90% случаев с комфортом, но вы также через пункты меню можете изменить порядок сортировки файлов, изменить цветовые схемы итд. Изыски оставляю вам, это не полное руководство по МС, а лишь краткий курс молодого бойца

Горячие клавишы

Тысячи их! Но в повседневной практике вам пригодятся дай бог пара десятков. Давайте рассмотрим самые на мой взгляд нужные.

F10 - закрыть МС. Без комментариев.
F9 - переход в меню МС.
Esc - Выход (из диалогов, меню, редактора, чего угодно)

Ctrl + O - переход в терминал и обратно. Вы можете к примеру скрыть МС, выполнить команды в терминале, посмотреть вывод, и заново показать МС. сам менеджер никуда не девается.

Ins - выделить файл или наоборот снять выделение. Нужно чтобы указать файлы и папки для которых даются команды.

F3 - просмотреть файл (без возможности редактирования)
F4 - редактировать файл
Shift + F4 - создать новый текстовый файл
F5 - копировать (выделенное из одной панели в другую)
Shift + F5 копировать в той же папке
F6 - переместить (выделенное из одной панели в другую)
Shift + F6 - по сути переименовать в той же папке
F7 - создать папку
F8 - удалить

Ctrl + Enter - скопировать имя файла в командную строку.

Здесь имхо стоит оговориться. У МС внизу есть командная строка. Мы ведь в консоли работаем. И все консольные команды в МС так же работают. То есть набрав например cd

/ мы сменим панель МС на домашний каталог. а скажем набрав chmod 777 и нажав ctrl + enter мы сменим права на выделеный файл на rwx rwx rwx

Enter - зависит от того что выделено. Если папка - вход в папку, архив или исо образ - зайдет внутрь архива. изображение или фильм - откроет просмотр изображения или видео. Короче вход куда бы то ни было Но для просмтра содержимого скажем обычных текстовых файлов придется использовать F3 или F4. Так то.

В заключение

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

За более подробной информацией по командам и использованию советую обратиться к гугл Тему буду дополнять если будет чем и будут права на редактирование

Последний раз редактировалось пользователем 1 zuzabrik; всего редактировалось раз: 13

13 сен 2016, 13:44

Часть 2. Встроенный редактор mcedit

Вступление

Для редактирования текстовых файлов можно использовать разные редакторы. Как мы помним редактирование файла из MC вызывается по клавише F4. При использовании этой команды первый раз линукс любезно спросит нас какой именно мы хотим использовать по умолчанию.

3-им пунктом тут на выбор дается mcedit. О нем и пойдет речь. В дальнейшем МС не будет задавать этот вопрос прописав в нашей домашней папке файл .selected_editor. Мы можем отредактировать этот файл и изменить редактор по умолчанию, или просто удалить файл чтобы МС спросил нас еще раз о предпочтениях.

Почему mcedit?

По той же причине, что и МС - это консольный текстовый редактор с функционалом, достаточным для повседневной работы с текстовыми файлами. В отличие от скажем Vi где без спец подготовки даже выйти из редактора не получится, в mcedit все интуитивно понятно Плюс к этому mcedit отлично умеет подсвечивать синтаксис файлов понимая по содержимому и расширению с кодом какого языка он работает. Если вы установили mc то mcedit уже установлен.

Функционал

Стоит оговориться что мс как и mcedit рассчитан на консоль. И не подразумевает работу с мышкой, поэтому некоторые операции типа выделения могут слегка шокировать гуру блокнота Windows Но обо всем по порядку.

F2 - сохранить файл.

F3 - выделение. Как уже говорилось выше выделение работает без мышки. Как? 0_о Нажав F3 в первый раз редактор переходит в режим выделения в той позиции, в которой стоит курсор. Далее стрелочками мы двигаемся куда нам надо и за курсором идет выделение. Чтобы его зафиксировать и вернуться к обычному режиму еще раз нажимаем F3. Например для выделения текста с текущей позиции до конца строки надо нажать F3, End, F3. Вроде ничего сложного, но с непривычки может удивить.

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

F5 - копирует выделеный блок в текущую позицию курсора.
F6 - перемещает выделеный блок в текущую позицию курсора
F7 - поиск. То же что и F4 только без замены текста.
F8 - удаляет строку в позиции курсора, или выделенный фрагмент.
F9 - меню редактора. Куча всего, особо описывать не буду.
F10 - выход.

Ctrl + Y - удаляет строку в позиции курсора. Полезно когда выделять лень, а поудалать строки хочется

Копипаста

Наверное самая большая проблема у новичков возникает с копированием текста из одного файла в другой средствами mcedit. Вообще можно вставить нужный текст из консоли, браузера или любого другого места просто нажав Shift + Insert.

Гораздо интереснее это делается из одного документа mcedit в другой. Для этого редактор использует временный файл clipboard. Чтобы скопировать выделенный текст в этот буфер надо зайти в меню (F9), выбрать файл -> копировать в файл. В другом mcedit для вставки выполняем меню (F9) -> вставить файл, в открывшемся диалоге просто нажимаем [Enter]. В этом диалоге к слову можно выбрать и другой файл, а не mcedit'овый clipboard. Тогда вставится другой файл целиком.


НАЗВНАИЕ
mcedit - внутренний редактор файлов из GNU Midnight Commander.
ИСПОЛЬЗОВАНИЕ
mcedit [-bcCdfhstVx?] [+число] имя_файла
ОПИСАНИЕ
mcedit это символическая ссылка на mc, главный исполняемый файл GNU Midnight Commander. Вызов GNU Midnight Commander при помощи данного имени запускает внутренний редактор и открывает файл указанный в командной строке. Редактор основан на консольной версии редактора cooledit - независимой программы написанной под X Window System.
ОСОБЕННОСТИ
Встроенный редактор это полнофункциональный полно-экранный редактор. Позволяет редактировать файлы размером не более 64 мегабайт. Также можно редактировать бинарные файлы. Функции которые в настоящее время поддерживаются: копирование, перемещение, удаление, вырезка, вставка помеченного текста; операция отмены; выпадающее меню; вставка текста из файла; макросы, регулярные выражения поиска и замены; выделение текста с помощью Shift-стрелки (если поддерживается терминалом); режим замены текста при вводе; авто-перенос слов; авто-отступ; настраиваемый размер табуляции; подсветка синтаксиса для различных типов файлов, а также возможность передачи текстовых блоков через pipe, для дальнейшей обработки внешними утилитами такими как indent или ispell.
КЛЮЧИ
Редактор прост в использовании и может использоваться без предварительного изучения документации. Выпадающее меню вызывается клавишей F9. В меню программы и в нижней панели вы сможете ознакомиться также и с другими "горячими" клавишами.
Дополнительно к этому вы можете использовать клавишу Shift совместно со стрелками для пометки текста (если поддерживается терминалом)
Чтобы использовать стандартную поддержку мыши, предоставленную терминалом,
нажмите и удерживайте клавишу Shift,
например:
Shift-мышь Сtrl-C скопировать во внешний буфер
Shift-Ins вставить из внешнего буфера
**В зависимости от терминала и установленной версии mcedit комбинации могут разниться, но везде это работает. Если программа запрашивает у терминала мышь, то выделение в терминале отрубается, чтобы не конфликтовать. Как его врубить обратно, зависит только от
терминала.
man mcedit:
To use the standard mouse support provided by your terminal, hold the Shift key.
Ctrl-Ins копирует помеченный текст в файл

Midnight Commander - популярный двухпанельный файловый менеджер, широко распространенный в UNIX-like операционных системах, он должен быть знаком каждому, кто хоть раз работал в консоли. Но, как показывает практика, не все администраторы в полной мере используют все возможности данного приложения, ограничиваясь только базовыми, что может приводить к определенным неудобствам. Поэтому сегодня ы расскажем о возможностях Midnight Commander и приемах, способных сделать работу в нем удобной и эффективной.

Midnight Commander, он же mc, относится к тому ПО, которое ставится на сервер в первую очередь. Если вы подключились к уже настроенному серверу, то он там с очень большой вероятностью уже будет. Установить его также несложно:

Для запуска выполните простую команду:

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

midnight-commander-tips-and-tricks-001.jpg

Основы навигации должны быть известны всем, но тем не менее повторимся: для перемещения внутри панелей следует использовать клавиши со стрелками, PageUp и PageDown прокручивают содержимое на размер экрана вверх или вниз, а Home и End перемещают в начало или конец списка, для переключения панелей используется Tab , сочетание клавиш Ctrl + o сворачивает панели и дает доступ к консоли, повторное нажатие этих же клавиш восстанавливает панели.

Нижнее меню предлагает ряд часто используемых действий, привязанных к функциональным клавишам Fn , цифра, написанная около пункта меню, обозначает номер функциональной клавиши, например, F5 - копирование, F8 - удаление. Клавиша F9 перемешает нас в верхнее меню менеджера, навигация по которому осуществляется с помощью клавиш со стрелками.

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

midnight-commander-tips-and-tricks-002.jpg

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

midnight-commander-tips-and-tricks-003.jpg

Раздел Команда предоставляет доступ к возможностям самого файлового менеджера, управлению панелями и доступ к некоторым системным функциям:

midnight-commander-tips-and-tricks-004.jpg

В Настройках находятся собственно настройки, на которых мы остановимся подробнее, потому как ряд опций следует включить практически сразу же, так как они сильно влияют на удобство работы.

midnight-commander-tips-and-tricks-005.jpg

Большинство пользователей mc используют встроенный редактор mcedit, если вы входите в их число, то сразу включите его использование в разделе Конфигурация.

midnight-commander-tips-and-tricks-006.jpg

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

midnight-commander-tips-and-tricks-007.jpg

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

Закончив с настройками, перейдем к приемам работы. В каждый отдельный момент времени в активной панели у нас выбран какой-либо файл или директория над которыми будут выполняться заданные нами действия. Если нам требуется обработать сразу несколько файлов или директорий, то их следует выделить при помощи клавиши Insert , выделенные файлы подсвечиваются желтым цветом, повторное нажатие снимает выделение.

midnight-commander-tips-and-tricks-009.jpg

Например, указанная выше маска в нашем случае выделит файлы conf1 и file1. Существует также и обратная возможность - снять выделение по маске с части файлов, для этого используйте клавишу - , принцип действия точно такой же, как и в предыдущем примере. Использование этих возможностей достаточно удобно, скажем, быстро выделить группу файлов по широкой маске, затем снять выделение с некоторых по более узкой. Для того, чтобы инвертировать выделение можно использовать клавишу * , но учтите, что это работает только для файлов.

В некоторых случаях в текущей директории могут появиться файлы, генерируемые сторонними программами, скажем, файлы логов или закачек. Но панели Midnight Commander не отображают текущих изменений, чтобы принудительно обновить содержимое нажмите Ctrl + r , в других ситуациях на экране может нарушиться отображение или остаться артефакты от других программ, которые вы запускали из среды менеджера, для перерисовки экрана следует использовать сочетание Ctrl + l .

Перейдем к операциям копирования и перемещения/переименования. Последние две операции с точки зрения файловой системы представляют одно и тоже действие, поэтому нажатием на F6 мы может либо переместить, либо переименовать, либо совместить оба этих действия. А в остальном вроде бы все просто, но не будем делать поспешных выводов. При копировании или перемещении открывается дополнительное окно, которое содержит поля шаблонов исходного и конечного мест назначения. Что это и для чего нужно?

В этих полях мы можем использовать подстановочные символы: * - для группы символов и ? - для одиночного в шаблонах источника, а в шаблоне приемника указать \n - где n - номер символа или группы символов. Самый простой пример: мы хотим переместить файлы conf1 - conf3 и переименовать их в config1 - config3. Нет ничего проще, выделяем все три файла, шаблон источника заполняем маской по числу символов в исходном имени - . , а шаблон приемника указываем как config\5 - т.е. добавить к указанному имени пятый символ из источника.

midnight-commander-tips-and-tricks-010.jpg

Возьмем задачу посложнее, допустим у нас есть файл myservice.conf и мы хотим при копировании поменять местами имя и расширение. В шаблоне источника разделим исходное имя на группы символов: *.*, а в шаблоне приемника укажем \2.\1. Первое выражение указывает, что у нас до точки одна группа символов, а после нее другая. Второе предписывает сначала поставить вторую группу символов, затем точку (она не входит ни в одну группу), а после нее вывести первую.

Еще сложнее, допустим мы хотим вместо myservice.conf получить servicemy.conf, в этом случае исходный шаблон будет выглядеть так: *s*.*, мы поделили имя на три части, разделители s и точка. Шаблон приемника укажем как: s\2\1.\3 - т.е. выводим сначала первый символ разделитель, потом вторую группу символов, за ней первую, точку и третью группу.

midnight-commander-tips-and-tricks-011.jpg

Как видим - возможности весьма богатые и освоив их вам не составит особого труда скопировать, скажем, фотографии с карты памяти, попутно переименовав их из какого-нибудь DSCN0439.JPG в Poezdka_more_2019_039.jpg.

Следующая, часто встречающаяся задача - это изменение прав или владельца объекта. Используйте сочетание клавиш Ctrl + x c (набирается как одновременное нажатие Ctrl и х, затем с) для изменения прав. Можно выделить и изменить права сразу нескольким объектам, но при этом вам будут показаны текущие права только первого выбранного файла.

midnight-commander-tips-and-tricks-012.jpg

Для изменения владельца нажмите Ctrl + x o , как и в предыдущей команде вы можете сделать это для группы объектов, но увидите текущего владельца только у первого выбранного.

midnight-commander-tips-and-tricks-013.jpg

За поиск отвечает сочетание Ctrl + s , после чего просто начинайте вводить имя файла:

midnight-commander-tips-and-tricks-014.jpg

Для быстрого создания жесткой или символической ссылки используйте: Ctrl + x l и Ctrl + x s . Учтите, что по умолчанию жесткая ссылка создается в текущем каталоге, а символическая в каталоге неактивной панели.

midnight-commander-tips-and-tricks-015.jpg

Также у любого системного администратора есть расположения, куда ему нужно переходить достаточно часто, чтобы каждый раз не путешествовать по дереву каталогов можно добавить их в список быстрого доступа, для этого, находясь в целевом каталоге нажмите Ctrl + x h . Чтобы вызвать список быстрого доступа следует нажать Ctrl + \ .

midnight-commander-tips-and-tricks-016.jpg

Пассивную панель можно использовать для получения информации о текущем файле или отображении его содержимого. Для переключения в режим отображения информации нажмите Ctrl + x i :

midnight-commander-tips-and-tricks-017.jpg

Чтобы просматривать в пассивной панели содержимое - используйте комбинацию клавиш Ctrl + x q :

Еще одна удобная функция - открыть в пассивной панели каталог под указателем, для этого нажмите Alt + o :

2020-10-31_23-49-15.jpg

Сравнить содержимое двух каталогов можно сочетанием клавиш Ctrl + x d с обоих сторон будут выделены различающиеся файлы, вы сразу можете перейти в нужную панель и выполнить действия над ними, например, копирование или перемещение.

midnight-commander-tips-and-tricks-020.jpg

Чтобы сравнить содержимое файлов следует последовательно нажать две комбинации клавиш Ctrl + x и Ctrl + d откроется специальный редактор, в котором вы сможете отредактировать сравниваемые файлы или выполнить их слияние.

midnight-commander-tips-and-tricks-021.jpg

Отдельного разговора заслуживает встроенный редактор - mcedit, его можно использовать как в составе оболочки Midnight Commander, так и отдельно, для редактирования файла в данном редакторе достаточно выполнить команду:

где filename - имя требуемого файла. В составе оболочки для редактирования файла под выделением нажмите F4 , для создания и редактирования нового файла в текущей директории нажмите Shift + F4 .

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

midnight-commander-tips-and-tricks-022.jpg

Для перехода в режим выделения нажмите F3 , затем при помощи клавиш со стрелками выделите необходимый участок текста, завершив выделение нажмите F3 повторно, чтобы выйти из режима. Затем переместите курсор в нужное место и нажмите F5 чтобы скопировать выделенный участок или F6 , чтобы его переместить. Для вставки текста из буфера обмена нажмите Shift + Insert , если вы работаете через SSH, то будет использован буфер локального ПК, это удобно, вы можете копировать команды на своем компьютере и вставлять их в файл на удаленном сервере.

Если же нужно перенести текст между локальными файлами на сервере, то следует использовать файл буфера обмена. Чтобы скопировать в него выделенный участок следует использовать сочетание клавиш Ctrl + Insert , для вырезки - Shift + Del . Вставить содержимое файла буфера обмена в файл можно сочетанием Shift + F5 . Отменить действие можно нажатием Ctrl + u

Нажатие F4 вызывает функцию поиска с заменой:

midnight-commander-tips-and-tricks-023.jpg

Как видим, Midnight Commander - это достаточно мощный и удобный инструмент, позволяющий значительно упростить работу в консоли, поэтому уметь эффективно работать с ним должен каждый системный администратор. В данной статье мы перечислили далеко не все возможности этого замечательного менеджера, чтобы узнать больше - воспользуйтесь встроенной справкой, она вызывается нажатием клавиши F1 .

Статьи и заметки об установке и настройке Windows, Linux, маршрутизаторов и т.д.

Ctrl+k - Удалить часть строки до конца строки
Ctrl+s - Включить или выключить подсветку синтаксиса
Ctrl+u - Отменить действия

F3 - Начать выделение текста. Повторное нажатие F3 закончит выделение
Shift+F3 - Начать выделение блока текста. Повторное нажатие F3 закончит выделение
F5 - Скопировать выделенный текст
F6 - Переместить выделенный текст
F8 - Удалить выделенный текст
Meta+i - Переключение режима "Автовыравнивание возвратом каретки", удобно при вставке отформатированного текста из буфера обмена
Meta+l - Переход к строке по её номеру
Meta+q - Вставка литерала (непечатного символа).См. таблицу ниже
Meta+t - Сортировка строк выделенного текста
Meta+u - Выполнить внешнюю команду и вставить в позицию под курсором её вывод
Ctrl+f - Занести выделенный фрагмент во внутренний буфер обмена mc (записать во внешний файл)
Ctrl+k - Удалить часть строки до конца строки
Ctrl+n - Создать новый файл
Ctrl+s - Включить или выключить подсветку синтаксиса
Ctrl+t - Выбрать кодировку текста
Ctrl+u - Отменить действия
Ctrl+x - Перейти в конец следующего
Ctrl+y - Удалить строку
Ctrl+z - Перейти на начало предыдущего слова
Ctrl+End - Перейти в конец файла
Ctrl+Home - Перейти в начало файла
Shift+F5 - Вставка текста из внутреннего буфера обмена mc (прочитать внешний файл)
Meta+Enter - Диалог перехода к определению функции
Meta+- - Возврат после перехода к определению функции
Meta++ - Переход вперед к определению функции
Meta+n - Включение/отключение отображения номеров строк
tab - Отодвигает вправо выделенный текст, если выключена опция "Постоянные блоки"
Meta-tab - Отодвигает влево выделенный текст, если выключена опция "Постоянные блоки"
Shift+Стрелки - Выделение текста
Shift+Ctrl+c - Копировать текст
Shift+Ctrl+v - Вставить текст
Meta+Стрелки - Выделение вертикального блока
Meta+Shift+- - Переключение режима отображения табуляций и пробелов
Meta+Shift++ - Переключение режима "Автовыравнивание возвратом каретки"

Теперь немного отойду от темы горячих клавиш в mcedit и отвечу на несколько часто задаваемых вопросов по mcedit.

Дублировать строку - переходим в начало строки и нажимаем одновременно Shift и стрелку вниз, затем жмем F5
Удалить строку - ничего не выделяем, переходим на нужную строку и жмем F8
Восстановить удаленные строки - Ctrl+u
Выделить весь текст (выделить все) - нажимаем F9, в появившемся вверху меню переходим в "Правка" и там жмем "Отметить всё".

Я, как правило, редактирую исходний код во встроенном в mc (midnight commander) редакторе mcedit (не спрашивайте почему не в vim, так исторически сложилось). И уже довольно давно в mcedit можно пользоваться функцией записи и проигрывания макросов.

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

Задача была открыть на редактирование файл содержащий проблему в котором по хоткею, т.е. приложив минимум усилий.
Т.е в редакторе был открыт файл со списоком предупреждений, который был сгенерирован утилитой doxygen, это был список содержащий полный путь к проблемному файлу а также номер строки.

Файл с предупреждениями выглядел примерно так (только строк было значительно больше):

Решение

В первую очередь, задача была разбита на две подзадачи:
1) выделить нужный участок текста от начала строки до двоеточия, включая номер строки;
2) обработать во внешней программе выделенный фрагмент;

Внешние макросы (external macros)

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

Узнать где mcedit хранит внешние макросы можно коммандой:


в результате мы увидим следующий текст


Далее необходимо написать код внешнего обработчика и сохранить его с именем /home/smind/.local/share/mc/mcedit/macros.d/macro.<ЧИСЛО>.sh
Данное <ЧИСЛО> потребуется далее при написании макроса (в моём случае файл назывался macro.42.sh).

Файл внешнего макроса должен выглядеть примерно так

%b — имя файла содержащего выделенный в редакторе текст.

Макросы редактора (mcedit macros)

Для записи макроса достаточно нажать сочетание ctrl-r после чего дальнейшие нажатия клавишь будут записываться и смогут быть повторены.
Для окончания необходима еще раз нажать ctrl-r и далее нажать хоткей для вызова макроса.

Теперь нужно записать следующий макрос:

… и после окончания записи макроса повесить его на сочетание ctrl-P, после чего необходимо открыть файл храняший макросы /home/smind/.local/share/mc/mc.macros


В строчку, содержащую нужный макрос, необходимо добавить вызов внешнего макроса — ExecuteScript:42;

Должно получиться что то вроде этого:


Далее просто устанавливаем курсор на любую строку содержащую путь и нажимаем ctrl-p, произойдёт открытие файла по пути под курсором.

PS: надеюсь количество пользователей испольжующих макросы в mcedit ВНЕЗАПНО возрастёт.
PPS: на сочетание ctrl-F у меня повешено форматирование выделенного текста с помощью утилиты indent (очень удобно)
PPPS: извиняюсь за большое количество повторений слов «Далее» и «После»

Читайте также: