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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 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
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

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 чат
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks, у меня сделано так:
  1. при старте поиска искомая строка показывается в шапке редактора;
  2. если искомое не найдено, выводится сообщение и строка остаётся. Т.е Вы можете:
    2.1. изменить искомую строку (BackSpace-ом);
    2.2. продолжить писк в другом направлении
    2.3. прекратить поиск.
По-моему, это оптимально.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

citRiks wrote: Sat 07 Aug, 2021 16:07 а нельзя ли сделать так, что при НЕнахождении слова далее по тексту, чтобы искал ПРЕЖДЕ по тексту?
v2.12
При достижении конца файла предлагается продолжить поиск с начала. И наоборот.
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 »

buniak_a_h wrote: Sat 07 Aug, 2021 16:56 citRiks, у меня сделано так:
  1. при старте поиска искомая строка показывается в шапке редактора;
  2. если искомое не найдено, выводится сообщение и строка остаётся. Т.е Вы можете:
    2.1. изменить искомую строку (BackSpace-ом);
    2.2. продолжить писк в другом направлении
    2.3. прекратить поиск.
По-моему, это оптимально.
"у вас" - это где? если это ваш другой скрипт, то где ссылка? :)
в оригинальном же скрипте не соображаю как это сделать
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sat 07 Aug, 2021 18:14 "у вас" - это где?
Очень небольшая переделка из Editor_QuickSearch.lua от SimSU
Last edited by buniak_a_h on Sat 07 Aug, 2021 18:49, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

buniak_a_h wrote: Sat 07 Aug, 2021 18:49 Очень небольшая переделка из Editor_QuickSearch.lua от SimSU
Извините …
Сейчас посмотрел - переделка довольно большая. Я не публиковал; если надо - пришлю (сюда или в личку)
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

John Doe, да, так интуитивно понятнее, СПАСИБО
Вместе с этим, в идеале хотелось бы, чтобы искал выше по тексту автоматически (или с подтверждением от пользователя, диалогом), так как в большинстве случаев мы хотим найти ближайшее значение, а не первое или последнее во всем файле. чтобы автоматически переключался (или предлагал переключится в реверс) в реверс если не находил далее по тексту, мне кажется что эта логика не внесет сумятицу, но будет интуитивнее.
Т.е., практически как сейчас, только чтобы в диалоге В ДОБАВОК к тому выбору что есть ("Изволите ли искать сначала?"), предлагалось бы еще и переключится в реверс (найти ближайшее выше)
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

buniak_a_h wrote: Sat 07 Aug, 2021 18:55 Сейчас посмотрел - переделка довольно большая. Я не публиковал; если надо - пришлю (сюда или в личку)
я думаю общественно полезнее будет в теме СимСу добавить ваш вариант, а так выглядит разумно то что вы добавили, выгкядит как практически то что я хотел.
что не отменяет желательности допиливания и обсуждаемого скрипта от @John Doe
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Sat 07 Aug, 2021 19:02 я думаю общественно полезнее будет в теме СимСу добавить ваш вариант
Добавил
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote: Sat 07 Aug, 2021 17:33 v2.12
При достижении конца файла предлагается продолжить поиск с начала. И наоборот.
У меня при использовании встроенного поиска это не происходит — ни через начало, ни через конец. Просто промаргивает диалог, что искомое не найдено, и поиск не продолжается. Воспроизводится ли это ещё у кого-то? Если да, сложно ли это исправить?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Так и должно. Исправлять не планирую.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote: Sat 07 Aug, 2021 20:23 Так и должно.
Странное долженствование. Ну да хозяин барин. Авось, у кого ещё дойдут руки исправить…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Макрос "паразитирует" на плагинах (или опционально на стандартном диалоге замены) поэтому ничего странного нет в том что его возможности тесно связаны с наличием той или иной фичи у соответствующего плагина.

Разумеется возможно реализовать отсутствующее и собственными силами, но это уже будут костыли на костылях.

По-хорошему давно стоило всё переделать прямым образом, и обходиться без плагинов, но руки не доходят. Не в последнюю очередь потому что меня на 99% устраивает и текущая функциональность.
посредством набора костылей.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

v2.13
Исправления
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Закешировалось видимо. Возьмите тут https://gist.githubusercontent.com/john ... Search.lua
https://t.me/FarManager — Telegram чат
Post Reply

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