Unix-like path Ctrl+F
Unix-like path Ctrl+F
Здравствуйте, уважаемые пользователи и разработчики
самого прекрасного файлового менеджера.
Подскажите, пожалуйста, есть ли возможность сделать так, чтобы по нажатию Ctrl+F, возвращался бы путь
"C:/Program Files/Far Manager/Far.exe"
вместо
"C:\Program Files\Far Manager\Far.exe"
Использую FAR 3.0.5800.0 x64 под Win 10
самого прекрасного файлового менеджера.
Подскажите, пожалуйста, есть ли возможность сделать так, чтобы по нажатию Ctrl+F, возвращался бы путь
"C:/Program Files/Far Manager/Far.exe"
вместо
"C:\Program Files\Far Manager\Far.exe"
Использую FAR 3.0.5800.0 x64 под Win 10
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Unix-like path Ctrl+F
Code: Select all
Macro {
area="Shell"; key="CtrlF";
action=function()
local s = APanel.Path.."\\"..APanel.Current
s = s:gsub("\\","/")
print(s)
end;
}
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Unix-like path Ctrl+F
Сначала я хотел сделать макрос по-другому: дать Фару вывести то, что он выводит, а затем уже делать преобразование реального вставленного текста. Но это больше возни, поэтому сделал по-простому.
- 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
Во-во! Я бы сделал по другому хоткею замену в комстроке обратный слэш на прямой. Типа
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.
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Unix-like path Ctrl+F
К сожалению, при этом теряется и позиция каретки в строке, и выделение в ней, и её степень прокрутки (при достаточно длинном тексте).buniak_a_h wrote: ↑Sun 19 Jun, 2022 14:59 Я бы сделал по другому хоткею замену в комстроке обратный слэш на прямой.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Unix-like path Ctrl+F
Ещё один недостаток такого подхода — то, что он заменяет все вхождения, не разбираясь, где путь к файлу, а где, скажем, текстовое сообщение с экранированными спецсимволами. Это я не критикую, а просто обозначаю границы применимости.
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Unix-like path Ctrl+F
Вот небольшая доработка (окавычивание, если есть пробелы):
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;
}
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Unix-like path Ctrl+F
Вероятно, более ожидаемо было бы действовать в соответствии с настройками
System.QuotedName
и System.QuotedSymbols
.Фар есть инструмент, а не нянька. © 2009 DrKnS
- 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
Именно поэтому я и назначил бы на другой хоткей. Зато появляется возможность отметить несколько файлов, нажать
Alt+Shift+Ins
(поместить полные имена отмеченных файлов в буфер), затем поместить их в комстроку. Ну, видимо, было бы кузяво сделать ограничение области замены (если в комстроке есть отмеченное, то заменять слэши только внутри отметки). Заодно сделать отметку вставленного из буфера (как в редакторе).