Как повторить клавиатурный макрос N раз?

Хотите говорить о Far и не знаете, куда обратиться?
User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by alex86m6 » Fri 09 Dec, 2016 14:09

Latest post of the previous page:

К сожалению это так работает только в 3.0+

Code: Select all

╔═════════════ Warning ══════════════╗
║ Macro key 'CtrlC' will be removed. ║
║             Sequence:              ║
║            "Keys("1")"             ║
║              Delete?               ║
╟────────────────────────────────────╢
║     { Yes } [ Change ] [ No ]      ║
╚════════════════════════════════════╝
В 1.75 попытка такое сделать вызывает другое окошко

Code: Select all

╔═════════════ Warning ═════════════╗
║ Macro key 'Alt5' will be removed. ║
║             Sequence:             ║
║                "q"                ║
║              Delete?              ║
║              Yes  No              ║
╚═══════════════════════════════════╝
Но отказаться от 1.75 не могу. Не все плагины, к которым привык, есть в 3.0+

User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by alex86m6 » Fri 09 Dec, 2016 14:23

HaRT wrote:
alex86m6 wrote: дружить с регулярными? ... нет нужды.
Так ведь Ваш пример с добавлением пользователей в AD показывает, что как раз есть такая нужда.
Не совсем. Там делаю так. Составляю список пользователей.

Иванов Иван Иванович
Петров Петр Петрович
Сидоров Сидор Сидорович
...

Макрос-1 "Вставить начало" типа
dsadd user "CN=
(повторить N раз, по количеству пользователей)

получается
dsadd user "CN=Иванов Иван Иванович
dsadd user "CN=Петров Петр Петрович
dsadd user "CN=Сидоров Сидор Сидорович

Макрос-2 "Вставить середину" типа
,OU=CRM_USERS,OU=1F_CRM,OU=Company,DC=domain,DC=local"
(повторить N раз, по количеству пользователей)

получается
dsadd user "CN=Иванов Иван Иванович,OU=CRM_USERS,OU=1F_CRM,OU=Company,DC=domain,DC=local"
dsadd user "CN=Петров Петр Петрович,OU=CRM_USERS,OU=1F_CRM,OU=Company,DC=domain,DC=local"
dsadd user "CN=Сидоров Сидор Сидорович,OU=CRM_USERS,OU=1F_CRM,OU=Company,DC=domain,DC=local"

ну и так далее проходами добиваются необходимые поля, типа
-samid
-pwd
-upn
-ln
-fn
-display
-title
-office
-email
и т.д.

и вот здесь бы очень помог "повторяльшик команд"
а пока приспособился это делать через Excel

В какое место тут вставить регулярные выражения, ума не приложу :-)
Last edited by alex86m6 on Fri 09 Dec, 2016 14:23, edited 1 time in total.

User avatar
HaRT
Moderator
Posts: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Как повторить клавиатурный макрос N раз?

Post by HaRT » Fri 09 Dec, 2016 14:45

alex86m6 wrote: отказаться от 1.75 не могу. Не все плагины, к которым привык, есть в 3.0+
Плагины для 1.75 работают и в 3.0.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by alex86m6 » Fri 09 Dec, 2016 14:53

HaRT wrote:
alex86m6 wrote: отказаться от 1.75 не могу. Не все плагины, к которым привык, есть в 3.0+
Плагины для 1.75 работают и в 3.0.
Как насчет
(tr)ail space tr(u)n(c)at(er)
убийца завершающих пробелов
(c) 2000 by raVen

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

Работает. В 1.75x86.
Очень удобный.

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Как повторить клавиатурный макрос N раз?

Post by zg » Fri 09 Dec, 2016 16:19


User avatar
Kerberos464
Posts: 1238
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 17 times
Been thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by Kerberos464 » Fri 09 Dec, 2016 19:02

16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.

iva
Posts: 123
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как повторить клавиатурный макрос N раз?

Post by iva » Sat 10 Dec, 2016 10:37

Вроде вот такой макрос повторяет.

Code: Select all

Macro { 
 area='Editor', key='CtrlR', description='Repeat keys', flags = 'EnableOutput',
 action=function()
  local num, continue, key = 0, true ;
  io.write('Repeat ')    -- Repeat
  while continue do
   key = mf.waitkey(0,0)
   local start, tmp = string.find(key, '%d')
   if start == 1 then 
    num=num..key
    io.write(key)        -- key
   else 
    continue = false
   end
  end	
  panel.GetUserScreen(); -- Clear screen
  panel.SetUserScreen(); --
  num = tonumber(num)	    
  if num > 0 then
   if eval(key,2)==-2 then
    for i=1,num do Keys(key); end
   else
    for i=2,num do eval(key,2); end
   end
  end
 end,
}
Нажимаем CtrlR число и клавишу.

User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by alex86m6 » Mon 12 Dec, 2016 14:24

iva wrote: Вроде вот такой макрос повторяет.

Code: Select all

Macro { 
 area='Editor', key='CtrlR', description='Repeat keys', flags = 'EnableOutput',
 action=function()
  local num, continue, key = 0, true ;
  io.write('Repeat ')    -- Repeat
  while continue do
   key = mf.waitkey(0,0)
   local start, tmp = string.find(key, '%d')
   if start == 1 then 
    num=num..key
    io.write(key)        -- key
   else 
    continue = false
   end
  end	
  panel.GetUserScreen(); -- Clear screen
  panel.SetUserScreen(); --
  num = tonumber(num)	    
  if num > 0 then
   if eval(key,2)==-2 then
    for i=1,num do Keys(key); end
   else
    for i=2,num do eval(key,2); end
   end
  end
 end,
}
Нажимаем CtrlR число и клавишу.
Спасибо!
Попробую.
Женя Рошаль тоже говорит, что сам такой фичи не добавлял, но вроде как был некий макрос (внешний) который позволял это делать.
еще бы понять как этот макрос в FAR прикуртить :-)

Сделал вот такой вот файлик
"C:\Program Files\Far Manager3\Addons\Macros\Editor.CtrlR.lua"

и в редакторе на CtrlR никакой реакции
что-то сделал не так?

Подсказали - марос надо перетащить в %FARPROFILE%\Macros\scripts
Буду так пробовать

Уразаработало! (с) Матроскин
Несколько странно выглядит, но работает.
"Странность" в запросе количества повторений. Ждал что вылезет какой-то диалог, но и так как есть - вполне устроит!
Last edited by alex86m6 on Mon 12 Dec, 2016 14:38, edited 4 times in total.

User avatar
HaRT
Moderator
Posts: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Как повторить клавиатурный макрос N раз?

Post by HaRT » Mon 12 Dec, 2016 14:37

alex86m6 wrote: Сделал вот такой вот файлик
"C:\Program Files\Far Manager3\Addons\Macros\Editor.CtrlR.lua"

и в редакторе на CtrlR никакой реакции
что-то сделал не так?
Нарываетесь :rtfm2: viewtopic.php?t=5207
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
alex86m6
Posts: 20
Joined: Fri 27 Mar, 2015 12:13
Has thanked: 1 time

Как повторить клавиатурный макрос N раз?

Post by alex86m6 » Mon 12 Dec, 2016 14:59

HaRT wrote:
alex86m6 wrote: Сделал вот такой вот файлик
"C:\Program Files\Far Manager3\Addons\Macros\Editor.CtrlR.lua"

и в редакторе на CtrlR никакой реакции
что-то сделал не так?
Нарываетесь :rtfm2: viewtopic.php?t=5207
Уже почитал и прикрутил. Чего кричать-то? :-)

User avatar
zg
zero-gravity
Posts: 5231
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Как повторить клавиатурный макрос N раз?

Post by zg » Mon 12 Dec, 2016 15:43

alex86m6 wrote:Уже почитал и прикрутил. Чего кричать-то? :-)
есть правила форума, их стоит соблюдать.

iva
Posts: 123
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как повторить клавиатурный макрос N раз?

Post by iva » Mon 12 Dec, 2016 15:56

"Странность" в запросе количества повторений.
Диалог можно было сделать, но мне лень. По-началу у меня вообще всё было "молча". У макроса есть одна опасность: не надо исправлять число повторений при помощи Backspace, так как будет повторен сам Backspace.

Shmuel
Posts: 5040
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel » Mon 12 Dec, 2016 16:47

Спасибо, что решили проблему - действительно, это иногда может быть полезно.
iva wrote: Диалог можно было сделать, но мне лень.
Как раз с диалогом макрос получается примерно вдвое короче исходного :)

Code: Select all

Macro {
  area='Editor'; key='CtrlR'; description='Repeat keys';
  action=function()
    local num = tonumber(far.InputBox())
    if num and num>0 then
      local key = mf.waitkey(0,0)
      if eval(key,2)==-2 then
        for i=1,num do Keys(key); end
      else
        for i=2,num do eval(key,2); end
      end
    end
  end;
}

User avatar
HaRT
Moderator
Posts: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Как повторить клавиатурный макрос N раз?

Post by HaRT » Mon 12 Dec, 2016 17:05

Shmuel, спасибо!
Предлагаю всё-таки
А сложно ли сделать, чтобы оно работало и для стационарных макросов? (У меня взамен отрабатывает встроенное действие.)
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: win.Uuid('EF2ACCC7-AD34-4523-8177-295EC05B3F02')
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5040
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel » Mon 12 Dec, 2016 17:23

HaRT, заполнять параметры на этот раз мне было лень :)
Но если уж заполнять, то 1-й параметр должен быть win.Uuid('EF2ACCC7-AD34-4523-8177-295EC05B3F02'), поскольку это API плагинов, а не макросов.
HaRT wrote: А сложно ли сделать, чтобы оно работало и для стационарных макросов?
Должно работать. Приведите пример макроса, на котором у вас это не работает.

User avatar
HaRT
Moderator
Posts: 7979
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Как повторить клавиатурный макрос N раз?

Post by HaRT » Mon 12 Dec, 2016 17:39

Shmuel wrote: Приведите пример макроса, на котором у вас это не работает.
— выполнять от начала файла, в котором хотя бы 2–3 строки.
Выяснил: происходит не то, что я ожидал, когда у желаемого макроса изначально Условие запуска (condition) не соблюдено, но в результате исполнения встроенных действий начинает соблюдаться. Согласен, случай довольно специфический. Пока даже не представляю, как к нему подступиться.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [spoiler]
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5040
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Как повторить клавиатурный макрос N раз?

Post by Shmuel » Mon 12 Dec, 2016 18:34

HaRT wrote: ока даже не представляю, как к нему подступиться.
Очень просто - выбросить condition и добавить её код в сам макрос (посредством if).

Post Reply

Return to “Обсуждение Far Manager”

Who is online

Users browsing this forum: No registered users and 2 guests