IncSearch — быстрый поиск в редакторе

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

Инкрементальный поиск — это поиск без диалогового окна.
Введённый текст отображается в строке статуса и ищется сразу по мере его набора.

Управление:
  • RAlt — включить режим инкрементального поиска.
    Если в текущей строке есть выделенный текст — он подхватывается.
  • BS — удалить последний введённый символ.
    При пустой строке: восстановить предыдущую строку.
  • CtrlBS — очистить строку поиска.
  • ShiftIns/CtrlV — вставить строку из буфера обмена.
  • RCtrl/ShiftF7/F3/Enter — найти следующее вхождение строки.
  • LCtrl/AltF7/ShiftF3/ShiftEnter — найти предыдущее вхождение строки.
  • Нажатие любой алфавитно-цифровой (или символьной) клавиши добавляет символ к искомой строке.
  • Нажатие любой функциональной клавиши отключает режим поиска, клавиша передаётся фару.
    (Это касается клавиш управления курсором, и всех клавиш с модификаторами Ctrl/Alt/Shift).
  • Для прекращения поиска можно также воспользоваться повторным нажатием RAlt.
  • Esc — прекращает поиск и восстанавливает исходную позицию.
  • AltRight — расширяет выделение до конца слова.
Немодальный поиск:
  • Активируется нажатием RAlt+буква (точнее символ слова: \w), или RAltSpace.
    Набирать текст нужно удерживая RAlt.
    При отпускании RAlt поиск завершается.
  • Даже после отпускания вернуться в позицию "до поиска" можно с помощью макроса на RAltBS.
  • Кроме того, поиск можно активировать нажатием RAlt+LCtrl / RAlt+RCtrl.
    В этом случае продолжается предыдущий поиск (назад / вперёд).
  • Доступны те же шорткаты, что и в обычном режиме, за исключением изменения опций.
    Чтобы работал Esc (т.е. Alt-Esc) — можно воспользоваться XKeys.
В данной реализации используются функции встроенного поиска FAR, или функции плагинов LuaFAR Search / EdtFind, если доступны
(можно запретить useLFSearch = false/useEdtFind = false).
Использование указанных плагинов позволяет выделить сразу все вхождения строки в тексте.

Настройка:
  • В начале скрипта в переменной options можно задать умолчания для параметров WholeWords, RegExp, CaseSensitive
    В процессе поиска значения можно изменить шорткатами Alt-W/G/C.
  • Специальный режим поиска: ExtraQuick: каждое нажатие не только прибавляет символ к строке поиска, но и ищет следующее вхождение.
    Активируется параметром ExtraQuick в начале скрипта, или шорткатом Alt-Q.
  • Назначив переменную useBM можно активировать установку закладки при начале поиска (при этом по Esc позиция не восстанавливается)


Актуальная версия:
raw | zip
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

Latest post of the previous page:

John Doe wrote: Fri 18 Jan, 2019 09:47вот
Спасибо!
Вижу в коде такой фрагмент: key:match"^R?Ctrl?RAltBS" — тут часом вокруг Ctrl скобочки не пропущены?

John Doe wrote: Fri 18 Jan, 2019 09:47 добавил костылей
А нельзя ли ещё опцию V для Reverse search?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

IncSearch — быстрый поиск в редакторе

Post by Shmuel »

Фрагмент RCtrl? наверняка ошибочный, но скобочки не помогут, так как паттерны Lua это не поддерживают.
Но в LuaFAR есть библиотека regex, она поддерживает.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

Указанные ошибки исправлены, спасибо.
HaRT wrote: Fri 18 Jan, 2019 17:33 А нельзя ли ещё опцию V для Reverse search?
Опишите сценарий использования, учитывая взаимодействие с командами поиска вперёд/назад, в модальном и немодальном режиме (возможно это непринципиально).
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

John Doe wrote: Sat 19 Jan, 2019 09:33 Опишите сценарий использования, учитывая взаимодействие с командами поиска вперёд/назад
Основных сценариев пока два:
1. Обычным поиском искал что-то назад, затем хочу воспользоваться инкрементным поиском вперёд, а он ищет только назад — приходится из него выходить, открывать обычный поиск, там отключать поиск назад (и уже нет смысла возвращаться в инкрементный поиск).
2. Искал что-то обычным поиском вперёд, затем хочется поискать инкрементным назад, но он ищет только вперёд — приходится снова пользоваться обычным поиском.

Немодальным режимом поиска я не пользуюсь, поскольку у меня есть локальные проблемы (вызванные программой Keyboard Maniac) с распознаванием правого Alt, поэтому я модальный инкрементный поиск переназначаю на левый Alt (кстати, хотелось бы иметь такую возможность из коробки).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

1. Вроде исправил.
2. Инкрементный поиск назад не предусмотрен, всё заточено на "вперёд".
Но уже введённую строку можно в любом направлении искать.
HaRT wrote: Mon 21 Jan, 2019 11:30 поэтому я модальный инкрементный поиск переназначаю на левый Alt (кстати, хотелось бы иметь такую возможность из коробки).
Что именно вы хотите "из коробки"?
Только модальный, или оба?
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

John Doe wrote: Mon 21 Jan, 2019 16:20 Вроде исправил.
Спасибо.
John Doe wrote: Mon 21 Jan, 2019 16:20 Инкрементный поиск назад не предусмотрен, всё заточено на "вперёд".
Ясно, вроде теперь ищет вперёд и после стандартного поиска «наоборот».
John Doe wrote: Mon 21 Jan, 2019 16:20 Что именно вы хотите "из коробки"?
Только модальный, или оба?
Лично мне достаточно, чтобы модальный поиск инициировался любым Alt'ом (при этом немодальный теряется, да).
Пока я сделал это для себя .

Однако что мешает им обоим сидеть на левом Alt'е? Разве у них есть конфликт по кнопкосочетаниям?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

John Doe, вспомнил я про ещё одну неприятность при работе через стандартный поиск: при модальном поиске (немодальный я не пробовал), как только вводишь «непродуктивный» символ (т.е. которого следом уже нет), каретка оказывается не за концом найденного (как при вводе «продуктивных» символов), а в начале найденного. Это и визуально смущает (особенно при включённом «кресте»), и на практике неудобно своим неединообразием (если решишь выйти из поиска «на этой остановке»). Сложно ли это исправить?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

HaRT wrote: Wed 23 Jan, 2019 20:34 Сложно ли это исправить?
[ ] Cursor at the end не подойдёт?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

HaRT wrote: Mon 21 Jan, 2019 18:22 Однако что мешает им обоим сидеть на левом Alt'е? Разве у них есть конфликт по кнопкосочетаниям?
Между собой конфликта нет, но может мешать другим сочетаниям на Alt в редакторе.
Впрочем, пробуйте сами, настройку сделал.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

John Doe wrote: Thu 24 Jan, 2019 09:02[ ] Cursor at the end не подойдёт?
Кстати, спасибо за напоминание. При обычном поиске мне как раз удобнее, когда эта настройка включена. Мешало же мне в основном отсутствие единообразия в пределах одного поиска. Я бы предпочёл, чтобы и инкрементный поиск подчинялся значению этой настройки.
John Doe wrote: Thu 24 Jan, 2019 10:49 настройку сделал
Спасибо, попробую.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

John Doe wrote: Thu 24 Jan, 2019 10:49 пробуйте сами
с LAlt работает (в т.ч. немодально), каретка в начало найденного не прыгает. Спасибо!
Фар есть инструмент, а не нянька. © 2009 DrKnS
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

IncSearch — быстрый поиск в редакторе

Post by ccaid »

John Doe, в текущей версии (прошлые не смотрел) режим ExtraQuick имеет недочет. после того как мы достигаем последней подходящей подстроки, начинаются проблемы: то не выделяется очередной введенный символ, то очередной символ не вводится в строку поиска.
Last edited by ccaid on Thu 14 Feb, 2019 14:22, edited 1 time in total.
Фар делают добрые люди
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

ccaid wrote: Thu 14 Feb, 2019 14:18 то не выделяется очередной введенный символ, то очередной символ не вводится в строку поиска
Поведение и впрямь какое-то странное: по достижении последнего вхождения, чтобы добиться выделения дальнейших символов, находящихся в нём, приходится вводить каждый из них дважды — в первый раз он добавляется в строку поиска, а во второй выделяется (использую встроенный поиск). Удобнее, наверно, было бы и впрямь, если впереди уже ничего не находится, продолжить выделять в текущем вхождении (возможно, с промаргиванием диалога «Не найдено»).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

v2.11
Макрос теперь поддерживает работу с плагином LuaFAR Search.
В шапке.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

IncSearch — быстрый поиск в редакторе

Post by citRiks »

а нельзя ли сделать так, что при НЕнахождении слова далее по тексту, чтобы искал ПРЕЖДЕ по тексту?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

citRiks wrote: Sat 07 Aug, 2021 16:07 а нельзя ли сделать так
Для EditFind: изменить значение на Loop:1
Для lfsearch: добавить bWrapAround=true

EditFind выводит предупреждение о том что поиск начнётся с начала, и это удобно
А lfsearch в этой ситуации к сожалению не даёт обратной связи: в интерфейсе диалога такая опция предусмотрена, а в скриптовом режиме - нет.
..тоже настраивается!
Last edited by John Doe on Sat 07 Aug, 2021 17:33, edited 1 time in total.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Полезные макросы и скрипты”