Псевдопрограммирование в Far Manager

5 Июн
2012

Многие из вас знают про существование менеджера файлов — Far Manager, именуемый в простонародье просто Фаром. Некоторые из вас даже знают про макросы, которые можно в нём создавать. Но не многие умеют их правильно создавать. Хочу поделится с блогажителями своим опытом.

Умение создавать макросы очень сильно облегчит вашу работу. Вы спросите меня когда может пригодится умение создавать макросы. Отвечу, тогда когда есть рутинная задача и на написание скрипта для её решения нет времени. Приведу несколько примеров из моей практики.

Задача № 1 – По долгу службы мне часто приходится работать с БД Oracle, и писать к ней куча разных запросов. В БД есть таблица TT (огромная таблица) с полем name тип varchar2.
Нужно вытащить все записи из таблицы TT чьё поле name входит в список имён:

Вася
Петя
Борис
Илья
Николай
……
еще 300 имён
… …
Роман

Список у нас для простаты предоставлен в текстовом файле — name.txt.
Составляем запрос
select * from TT
where name in (
здесь наш список имён
)
Но тут начинается трудность. Список в запрос нужно предоставить в таком виде:
‘Вася’,
‘Петя’,
‘Борис’,
‘Илья’,
‘Николай’,
……
еще 300 имён
… …
‘Роман’
Где каждое имя обрамлено кавычками, и после каждого стоит запятая.
Решение задачи:
Нажимаем F4 в Фаре на нашем файле name.txt.
Нажимаем ctrl-точка. Вверху слева в фаре появится красная буква R, что означает, что началась запись макроса. С этого момента нужно всё делать очень осторожно и обдуманно. Нажимаем последовательно HOME—кавычка — ctrl+”стрелка вправо”—кавычка – запятая – “стрелка вниз” – HOME. Снова нажимаем ctrl-точка и останавливаем запись макроса. Фар предложит выбрать комбинацию клавиш для нового макроса — выбираем любую. Я выбрал ctrl-] (моё любимое сочетание).
Разберём каждое нажатие отдельно:
HOME – зачем нажимать клавишу HOME, если при открытие файла курсор и так стоит в самом начале. А затем чтобы, при повторном вызове, макрос всегда начинал свою работу с начала строки.
Кавычка – это просто символ (’)
ctrl+”стрелка вправо – гарантированный переход в конец слова, так как все слова имеют разную длину.
Кавычка и запятая это просто символы.
“стрелка вниз” – переход на следующую строчку. А HOME это так на всякий случай.
Вот и готов наш псевдокод.
Применим макрос. Нажимаем 300 раз ctrl-]. Весь список, как по волшебству, становится обрамленным кавычками через запятую. Внимательный читатель сразу заметит, что 300 раз нажимать – это утомительно. Я нажимаю один раз комбинацию клавиш ctrl-], и не отпускаю клавиши до тех пор пока весь список не будет выглядеть должным образом. А можно написать ещё один макрос — псевдо цикл на 10 повторений. Нажать последовательно: ctrl “точка” — ctrl-] — ctrl-] — ctrl-] — ctrl-] — ctrl-] — ctrl-] — ctrl-] — ctrl-] — ctrl-] — ctrl-] — ctrl “точка”. Назначим новую комбинацию клавиш ctrl-W. Теперь для приведения списка состоящим из 300 строк в порядок нужно всего 30раз нажать комбинацию ctrl-W.

Задача № 2. Посложней предыдущей. В текстовом файле есть набор полей такого вида.
Имя должность дата рождения
Вася Начальник 03.02.1977
…. …… ……
ОЧЕНЬ МНОГО СТРОК
…. …. ……
Петя Подчинённый 25.01.1979

Для разового запроса нужно составить псевдо таблицу такого вида

Select ‘Вася’,’Начальник’, to_date(‘03.02.1977’,’dd.mm.yyyy’) from dual union all
……….
Select ‘Петя’,’ Подчинённый’, to_date(‘25.01.1979’,’dd.mm.yyyy’) from dual

Решение:
Нажимаем F4 на нашем файле. И далее последовательность клавиш (псевдопрограмма)
Ctrl+’.’ – HOME – select ‘ – ctrl+’стрелка вправо’ – ‘,’ — ctrl+’стрелка вправо’ — , to_date(‘ctrl+’стрелка вправо’-‘,’dd.mm.yyyy’) from dual union all — Ctrl+’.’
Назначаем макросу комбинацию клавиш crl-L. Задача выполнена.

Макросы в Far Manager не ограничены редактором, и поэтому можно переключаясь между несколькими файлами по ctrl+tab создавать просто немыслимые макросы. С помощью макросов можно обработать хоть тысячу файлов за короткий промежуток времени. Самое сложное при написании макросов это знание комбинаций клавиш, и умение правильно подобрать последовательность клавиш.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх