Unix-like path Ctrl+F

Здесь обсуждается всё, что касается макросов.
Post Reply
mden
Posts: 2
Joined: Sun 19 Jun, 2022 08:29
Has thanked: 1 time

Unix-like path Ctrl+F

Post by mden »

Здравствуйте, уважаемые пользователи и разработчики
самого прекрасного файлового менеджера.
Подскажите, пожалуйста, есть ли возможность сделать так, чтобы по нажатию Ctrl+F, возвращался бы путь
"C:/Program Files/Far Manager/Far.exe"
вместо
"C:\Program Files\Far Manager\Far.exe"

Использую FAR 3.0.5800.0 x64 под Win 10
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Unix-like path Ctrl+F

Post by Shmuel »

Code: Select all

Macro {
  area="Shell"; key="CtrlF";
  action=function()
    local s = APanel.Path.."\\"..APanel.Current
    s = s:gsub("\\","/")
    print(s)
  end;
}
mden
Posts: 2
Joined: Sun 19 Jun, 2022 08:29
Has thanked: 1 time

Unix-like path Ctrl+F

Post by mden »

Shmuel,
это то, что нужно.
Премного благодарен.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Unix-like path Ctrl+F

Post by buniak_a_h »

Обычный CtrlF ещё пробел в конец добавляет. Зачем-то…
2useven10
Posts: 5204
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Unix-like path Ctrl+F

Post by 2useven10 »

И кавычки иногда.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Unix-like path Ctrl+F

Post by Shmuel »

Сначала я хотел сделать макрос по-другому: дать Фару вывести то, что он выводит, а затем уже делать преобразование реального вставленного текста. Но это больше возни, поэтому сделал по-простому.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Unix-like path Ctrl+F

Post by buniak_a_h »

Shmuel wrote: Sun 19 Jun, 2022 13:02 Сначала я хотел сделать макрос по-другому: дать Фару вывести то, что он выводит, а затем уже делать преобразование реального вставленного текста. Но это больше возни, поэтому сделал по-простому.
Во-во! Я бы сделал по другому хоткею замену в комстроке обратный слэш на прямой. Типа

Code: Select all

Macro{
  area="Shell";
  key="CtrlAltQ";
  description="Замена в комстроке «\\» на «/»";
  flags="NotEmptyCommandLine";
  condition=function(key, data) return panel.GetCmdLine():match"\\" end;
  action=function(data)
    panel.SetCmdLine(nil, panel.GetCmdLine():gsub("\\","/"))
  end;
}
Last edited by buniak_a_h on Sun 19 Jun, 2022 15:00, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Unix-like path Ctrl+F

Post by HaRT »

buniak_a_h wrote: Sun 19 Jun, 2022 14:59 Я бы сделал по другому хоткею замену в комстроке обратный слэш на прямой.
К сожалению, при этом теряется и позиция каретки в строке, и выделение в ней, и её степень прокрутки (при достаточно длинном тексте).
 ! Message from: HaRT
mden, тема перенесена.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Unix-like path Ctrl+F

Post by buniak_a_h »

HaRT wrote: Sun 19 Jun, 2022 17:01 К сожалению, при этом теряется и позиция каретки в строке, и выделение в ней, и её степень прокрутки (при достаточно длинном тексте).
Я знал. Это - победимо, я просто не стал макросить, чтоб не затуманивать
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Unix-like path Ctrl+F

Post by HaRT »

buniak_a_h wrote: Sun 19 Jun, 2022 14:59 замену в комстроке обратный слэш на прямой
Ещё один недостаток такого подхода — то, что он заменяет все вхождения, не разбираясь, где путь к файлу, а где, скажем, текстовое сообщение с экранированными спецсимволами. Это я не критикую, а просто обозначаю границы применимости.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Unix-like path Ctrl+F

Post by Shmuel »

Вот небольшая доработка (окавычивание, если есть пробелы):

Code: Select all

Macro {
  area="Shell"; key="CtrlF"; -- choose another key if needed
  action=function()
    local s = APanel.Path.."\\"..APanel.Current
    s = s:gsub("\\","/")
    if s:find(" ") then s = '"'..s..'"' end
    print(s)
  end;
}
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Unix-like path Ctrl+F

Post by HaRT »

Shmuel wrote: Sun 19 Jun, 2022 19:42 окавычивание, если есть пробелы
Вероятно, более ожидаемо было бы действовать в соответствии с настройками System.QuotedName и System.QuotedSymbols.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Unix-like path Ctrl+F

Post by buniak_a_h »

HaRT wrote: Sun 19 Jun, 2022 19:30 недостаток такого подхода — то, что он заменяет все вхождения, не разбираясь, где путь к файлу, а где, скажем, текстовое сообщение с экранированными спецсимволами
Именно поэтому я и назначил бы на другой хоткей. Зато появляется возможность отметить несколько файлов, нажать Alt+Shift+Ins (поместить полные имена отмеченных файлов в буфер), затем поместить их в комстроку. Ну, видимо, было бы кузяво сделать ограничение области замены (если в комстроке есть отмеченное, то заменять слэши только внутри отметки). Заодно сделать отметку вставленного из буфера (как в редакторе).
Post Reply

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