FarCmds: быстрые префиксы

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

FarCmds: быстрые префиксы

Post by HaRT »

[Основная тема по плагину FarCmds тут]

Предлагаю укомплектовать плагин FarCmds макросами т.н. “быстрых префиксов”, идею которых лично я почерпнул из поставки плагина NamedFolders.

Вот какие быстрые префиксы настроены сейчас у меня:
: “cd:” (NamedFolders)
/ “far:macro ”
? “far:whereIs ”
< “far:edit < ”
> “far:goto ”
Активизируются они только при пустой командной строке, т.е. как раз тогда, когда крайне маловероятно, что понадобится ввести какой-то из этих символов.

Кроме того, для : есть ещё макрос на Ж, который делает то же самое, но ещё и через плагин Something переключает раскладку на английскую. Подобрать такие пары для прочих префиксов у меня энтузиазма уже не хватило, т.ч. если кто-то поделится, буду благодарен.

Прилагаю файл с соответствующими макросами для FarCmds. При желании туда легко добавить проверку того, что плагин загружен, — через проверку наличия его горячей клавиши в меню конфигурации плагинов (лично у меня так и сделано, но это завязано, во-первых, на язык интерфейса и, во-вторых, на саму клавишу).
Attachments
FarCmds_FastPrefixes_0.1.7z
FarCmds: быстрые префиксы для популярных команд
(677 Bytes) Downloaded 613 times
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

Обновил приложение в заглавном сообщении:
1. Теперь префикс вставляется даже при непустой командной строке, если курсор находится в её начале.
2. Добавлены префиксы:
 CtrlShift, (Ctrl<) “far:view < ”
 | “net: \\” (Network Browser)
 * “start /max ” (Windows command)
 & “%COMSPEC% /k ” (Windows command interpreter)
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: FarCmds: быстрые префиксы

Post by Yegor »

Похоже в самом reg-файле написано "where" вместо "whereis".
[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\?]
"Sequence"="F9 o u %c = CmdLine.Bof && CheckHotkey ( \"a\" ); Esc $If ( %c ) \"far:where \" $Else ? $End"
"DisableOutput"=dword:00000001
"Description"="FarCmds: Fast Prefix: \"far:where \""
@="FarCmds: Fast Prefix: \"far:where \""
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: FarCmds: быстрые префиксы

Post by HaRT »

Yegor wrote:Похоже в самом reg-файле написано "where" вместо "whereis".
Спасибо за замечание.
Но мне лень перевыкладывать.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

FarCmds: быстрые префиксы

Post by John Doe »

Макросы (из шапки) для Far 3
  1. local FastPrefixes = {
  2.  
  3.  
  4.  
  5.   --FarCmds
  6.  
  7.   ["?"] = "whereis: ",
  8.  
  9.   ["<"] = "edit: < ",
  10.  
  11.   [">"] = "goto: < ",
  12.  
  13.   ["CtrlShift,"] = "view: < ",
  14.  
  15.  
  16.  
  17.   --LuaMacro
  18.  
  19.   ["/"] = "lua: ",
  20.  
  21.   --["|"]="moon: ",
  22.  
  23.  
  24.  
  25.   --network
  26.  
  27.   ["|"] = "net: \\\\",
  28.  
  29.  
  30.  
  31.   --cmd
  32.  
  33.   ["&"] = "%COMSPEC% /k ",
  34.  
  35.   ["*"] = "start /max ",
  36.  
  37. }
  38.  
  39.  
  40.  
  41. for key,seq in pairs(FastPrefixes) do
  42.  
  43.   Macro {
  44.  
  45.     description=("Fast Prefix: %q = %q"):format(key,seq);
  46.  
  47.     area="Shell"; key=key;
  48.  
  49.     condition=function() return CmdLine.Bof end;
  50.  
  51.     action=function() print(seq) end;
  52.  
  53.   }
  54.  
  55. end
  56.  
  57.  
  58.  
  59. local en_US = 0x4090409
  60.  
  61. Macro {
  62.  
  63.   description='Fast Prefix: ":" = "cd:" (NamedFolders)';
  64.  
  65.   area="Shell"; key=":";
  66.  
  67.   condition=function() return CmdLine.Bof end;
  68.  
  69.   action=function()
  70.  
  71.     print "cd: "
  72.  
  73.     Far.KbdLayout(en_US)
  74.  
  75.   end;
  76.  
  77. }
Или так:
  1. local FastPrefixes = {
  2.  
  3.  
  4.  
  5.   --FarCmds
  6.  
  7.   ["?"] = "whereis: ",
  8.  
  9.   ["<"] = "edit: < ",
  10.  
  11.   [">"] = "goto: < ",
  12.  
  13.   ["CtrlShift,"] = "view: < ",
  14.  
  15.  
  16.  
  17.   --LuaMacro
  18.  
  19.   ["/"] = "lua: ",
  20.  
  21.   --["|"]="moon: ",
  22.  
  23.  
  24.  
  25.   --network
  26.  
  27.   ["|"] = "net: \\\\",
  28.  
  29.  
  30.  
  31.   --cmd
  32.  
  33.   ["&"] = "%COMSPEC% /k ",
  34.  
  35.   ["*"] = "start /max ",
  36.  
  37. }
  38.  
  39.  
  40.  
  41. local keys = ""; for key,seq in pairs(FastPrefixes) do keys = keys..key.." " end
  42.  
  43.  
  44.  
  45. Macro {
  46.  
  47.   description="Fast Prefixes";
  48.  
  49.   area="Shell"; key=keys;
  50.  
  51.   condition=function() return CmdLine.Bof end;
  52.  
  53.   action=function() print(FastPrefixes[akey(1)]) end;
  54.  
  55. }
  56.  
  57.  
  58.  
  59. local en_US = 0x4090409
  60.  
  61. Macro {
  62.  
  63.   description='Fast Prefix: ":" = "cd:" (NamedFolders)';
  64.  
  65.   area="Shell"; key=":";
  66.  
  67.   condition=function() return CmdLine.Bof end;
  68.  
  69.   action=function()
  70.  
  71.     print "cd: "
  72.  
  73.     Far.KbdLayout(en_US)
  74.  
  75.   end;
  76.  
  77. }
Предлагайте свои варианты быстрых префиксов
Last edited by HaRT on Tue 05 Apr, 2016 00:05, edited 2 times in total.
Reason: [codebox]; “where:”-->“whereis:”
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

FarCmds: быстрые префиксы

Post by HaRT »

John Doe wrote: Thu 03 Jul, 2014 16:25Макросы (из шапки) для Far 3
Я у себя в area дописал ShellAutoCompletion, а в action в начало вставил строку if Area.ShellAutoCompletion then Keys'Esc' end — чтобы работало и при открытом меню дополнения.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

FarCmds: быстрые префиксы

Post by HaRT »

Чтобы работало и при русском языке ввода, пришлось заменить akey(1) на akey(1,1).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

FarCmds: быстрые префиксы

Post by John Doe »

И неудивительно: https://bugs.farmanager.com/view.php?id=3562
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

FarCmds: быстрые префиксы

Post by Shmuel »

И неудивительно: поведение соответствует документации.
Post Reply

Return to “Обсуждение макросов”