Wave_Blessed
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору У меня есть макрос, который запускает диалог, в который можно ввести макрос. Причём, диалог после выполнения не закрывается, точнее, открывается снова, и достаточно нажать просто Enter, чтобы выполнить этот же макрос ещё один раз. Я его счас запустил и открыл историю. Там среди прочего есть такое (не помню, зачем делал): Keys('Down Enter Down Enter Down Enter Down Enter и дальше несколько десятков если не больше этих даун-энтер') С помощью копипейста пишется за секунды, и пофиг на лишние даун-энтер, лишние пустые строки в конце файла можно будет махом подчистить. И пофиг, что максимально колхозно и всрато, но для одноразовой задачи, над которой не хочется думать, приемлемо. Вариант 100 или 1000 раз нажать горячую клавишу тоже вполне рабочий, если повесить макрос на что-то однобуквенное и зажать эту букву. Можно создать полноценный макр на lua, это потребует чуть больше времени и усилий, но там уже можно использовать операторы цикла. Можно из первого варианта сделать чуть сложнее: Eval(for i = 1, 1000 do Keys('End Del')) или как там и что надо. Суть не в том, чтобы обязательно пользоваться именно макросом. Суть в том, что ФАР — это очень универсальный инструмент, в котором любую подобную задачу можно выполнить разными способами, в зависимости от того, что есть под рукой (например, у кого-то может не быть под рукой плагинов поиска-замены — если это чужой комп и нету выхода в сеть) и чем лучше владеешь. Добавлено: О, вариант, предложенный shmuz, я не знал, да ещё и забыл. На самом деле, просто не пользуюсь записью макропоследовательностей, а либо исполняю их одноразовым способом, либо пишу lua-файл. Вот этот макрос, не помню, где брал. Код: Macro { area = "Common"; key = "CtrlAltF8"; description = "Macro: запустить макрос"; action = function() if mf.env("FARLANG")=="Russian" then title = "Input Far macro"; msg = "Введите текст макроса (Far)"; errtitle = "Ошибка выполнения макроса"; err = "Функция eval(…) вернула ошибку: "; errcont = "\nВыполнить другой макрос?"; else title = "Input Far macro"; msg = "Type macro text (Far)"; errtitle = "Macro execution failed"; err = "eval(…) function returns error: "; errcont = "\nExecute another macros?"; end s=prompt(title,msg,0,"","InputMacroHistory"); while s and s~="" do i=eval(s); if i~=0 then r=msgbox(errtitle,err+mf.itoa(i)+errcont,0x00040000); if r~=1 then exit() end end s = prompt(title, msg, 0, "", "InputMacroHistory"); end end } |
|