LINUX.ORG.RU

[mcedit]Добавить фичу форматирования

 


0

0

Есть текст, содержащий на концах каких-нибудь строк энное количество пробелов и даже табуляций, и даже знаков ^M (оффтопичный CR+LF). В mcedit можно включить их отображение и обнаружить, это здорово. Можно даже найти/заменить их во всём файле по регекспу [\ \t\r]+$, и это тоже здорово.

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

★★★★★

Пишите макрос.

akk ★★★★★
()
Ответ на: комментарий от blexey

сколько о хвостовых пробелах

ну это просто...

первое надо поставить последний mc

второе глянуть на примеры макросов в macros.d в частности macro.7.sh который делает «delete trailing whitespace»

следующий шаг создать файл ~/.local/share/mc/mc.macros

и поместить туда что то вроде [editor] ctrl-T=ExecuteScript:7;

Сохранить, выйти из mc нажать в редакторе ctrl-t увидеть сообщение

«Невозможно открыть файл ... .local/share/mc/mcedit/macros.d/macro.7.sh No such file or directory (2) »

прочесть сообщение, понять его...

поместить файл со скриптом в каталог ~/.local/share/mc/mcedit/macros.d/

Профит

angel_il ★★★★
()
Ответ на: комментарий от angel_il

Опа, спасибо, есть такое и работает. Правда, не глобально, а внутри отмеченного F3-блока, ну пусть хоть так.

blexey ★★★★★
() автор топика
Ответ на: комментарий от angel_il

Уже разобрался по man mcedit, спасибо.
Вот только с блоком %b результат сразу видно в редакторе, а если подставляю %f, чтобы обработался весь файл, то он обрабатывается, но результат виден только если переоткрыть файл.

blexey ★★★★★
() автор топика
Ответ на: комментарий от blexey

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

angel_il ★★★★
()
Ответ на: комментарий от angel_il

Попробовал так сделать. Изменения всё равно происходят где-то «за кадром», только теперь ещё весь файл выделяется, но так и не меняется в редакторе. Зато меняется на диске и чтобы увидеть сделанные макросом изменения, надо выйти из mcedit, отказавшись от сохранения и открыть файл заново.

mc 4.8.1-1

blexey ★★★★★
() автор топика
Ответ на: комментарий от angel_il

Всё заработало отлично, спасибо. Сам чего-то тормознул.

А где описаны все действующие команды для этих макросов (MarkAll, ExecuteScript, etc)? В man mcedit их не обнаружил.

blexey ★★★★★
() автор топика
Ответ на: комментарий от blexey

ну это всё записавается автоматом в макрос надо просто нажать ctrl-r, выполнить какие то последовательности, из меню или с клавиатуры и закончить запись ctrl-r потом посмотреть что записалось. Там всё предельно понятно.

по поводу ExecuteScript есть в man mcedit.

angel_il ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.