Если в каком-то редакторе последней вызывали замену (а не просто поиск), то в новом редакторе по ShiftF7/AltF7 будет тоже запущена замена (условия которой сохранилась в диалоге) в соответствующем направлении. Если что найдётся, будет выдан стандартный диалог подтверждения (если не найдётся — тоже соответствующий стандартный диалог).
Раньше (еще года 2-3 назад) было так
1) В одном файле массово заменяешь символ A на B без запроса (Replace all)
2) В следующем файле просто нажимая Shift+F7 все массового заменялось полностью аналогично
3) В какой то версии стало так что Shift+F7 вместо повтора Replace All, делает обычный поиск. Теперь после SHift+F7 приходится нажимать Ctrl-F7 потом All
4) Можно ли вернуть старое поведение?
Last edited by Hunter1972 on Thu 06 Mar, 2025 13:29, edited 1 time in total.
Подтверждаю, что было, как вы описываете, — я сейчас специально проверил в Far Manager, version 3.0.0.5570 x64. И мне тоже стало менее удобно.
По идее должно быть несложно наскриптовать как-то так:
1. При закрытии диалога условий поиска/замены записать в глобальную переменную: SearchNext/SearchPrev или ReplaceNext/ReplacePrev.
2. В диалоге подтверждения замены, если нажали Replace all, в ту же переменную записать ReplaceAllNext/ReplaceAllPrev.
3. По нажатию ShiftF7 так или иначе вызвать соответствующие действия.
Но это, конечно, костыль. По хорошему следовало бы вернуть утраченную функциональность.
HaRT wrote: Thu 06 Mar, 2025 14:22
По хорошему следовало бы вернуть утраченную функциональность
Неоднозначно. Забудешь, что в прошлый раз выбрал Replace All - и внесёшь такой бардак!
На мой взгляд по ShiftF7 должен возникать диалог подтверждения Replace / Skip / Replace All / Cancel (такой есть, например, при синтаксическом контроле)
Hunter1972 wrote: Thu 06 Mar, 2025 13:29
В какой то версии стало так что Shift+F7 вместо повтора Replace All, делает обычный поиск.
У меня после закрытия файла по ShiftF7 ничего не происходит. Как будто не было поиска-замены, который надо повторить. Это, на самом деле, не очень удобно.
Если файл не был закрыт, то по ShiftF7 вызывается диалог подтверждения (как я и писал).
Так что забудьте моё предыдущее сообщение. У меня сейчас всё делается почти так, как ожидается. Может, что-то зависит от настроек?
FAR 6447
F = far.Flags
-- See https://forum.farmanager.com/viewtopic.php?p=179926#p179926
local lastSearchWasReplace
Event
description: "Helper for Editor ShiftF7/AltF7 macros in new editors"
group: 'DialogEvent'
action: ( event, param ) ->
if event == F.DE_DLGPROCINIT and param.Msg == F.DN_CLOSE and param.Param1 > 0
if info = param.hDlg\GetDialogInfo!
if info.Id == win.Uuid far.Guids.EditorSearchId
lastSearchWasReplace = false
if info.Id == win.Uuid far.Guids.EditorReplaceId
lastSearchWasReplace = true
false
Macro
description: "Repeat the last replacement (if any) in a new editor"
area: 'Editor', key: 'ShiftF7 AltF7'
condition: -> lastSearchWasReplace
action: ->
Keys 'CtrlF7 ' .. ( ( 'AltF7' == akey 1 ) and 'PgDn ShiftTab ' or '' ) .. 'EnOut Enter'
, чтобы если в каком-то редакторе последней вызывали замену (а не просто поиск), то в новом редакторе по ShiftF7/AltF7 будет тоже запущена замена (условия которой сохранилась в диалоге) в соответствующем направлении. Если что найдётся, будет выдан стандартный диалог подтверждения. Прошу погонять, не поломал ли я какие-то аспекты поведения в уже открытых редакторах, особенно если у кого сброшена настройка редактора [ ] Cursor at the end.
HaRT wrote: Sun 16 Mar, 2025 05:01 если в каком-то редакторе последней вызывали замену (а не просто поиск), то в новом редакторе по ShiftF7/AltF7 будет тоже запущена замена (условия которой сохранилась в диалоге) в соответствующем направлении. Если что найдётся, будет выдан стандартный диалог подтверждения.