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

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

Обновление

Post by John Doe »

[*]Адаптация к изменениям в билде 4098.
[*]Внутренние изменения и прочая косметика.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Попробовал. Первым делом добавил в enterSearchMode() первой строчкой BM.Add() и закомментарил восстановление позиции по Esc )
Может это опцией в начале файла оформить?
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

Из пожеланий:
1. Если искомое слово содержит более 1-го символа, то при нахождении вхождения за правой границей экрана, из-за правой границы виден лишь 1-й символ найденного слова. Хотелось бы видеть всё слово (фразу) с позиционированием курсора на 1-й символ.
2. Поиск по регэкспам.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

>закомментарил восстановление позиции по Esc
>Может это опцией в начале файла оформить?
Думал об этом, но показалось лишним, т.к. и без Esc есть несколько способов выйти из режима поиска.
Насчёт безусловного вызова BM.Add() тоже есть сомнения: стек закладок будет захламляться.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

>Хотелось бы видеть всё слово (фразу) с позиционированием курсора на 1-й символ.
Данный скрипт целиком полагается на EditFind (или на встроенный поиск), возможно стоит усовершенствовать там (впрочем не факт, хотелка специфическая).

>Поиск по регэкспам
Как автор аналогичного скрипта вы и без меня знаете, что поиск с регэкспами будет работать, стоит только предварительно включить его в настройках поиска.
Т.е. очевидно что вам хотелось бы большего удобства.
Так как именно вы это видите?
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:Т.е. очевидно что вам хотелось бы большего удобства.
Так как именно вы это видите?
В тех реализациях инкрементного поиска, которые мне кажутся наиболее удобными, есть возможность на лету переключать такие параметры, как case sensitive, whole words и regular expression. Делается это горячими клавишами — например, AltС, AltW и AltG соответственно.
Фар есть инструмент, а не нянька. © 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 »

Данный скрипт сам вообще не ищет.
И наворачивать AltС, AltW и AltG вряд ли целесообразно (при текущей архитектуре), т.к. может получиться нагромождение костылей.

Другой вопрос, что есть смысл и сам поиск осуществлять скриптом. Но это уже будет совсем другой скрипт.
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 »

AleXH wrote:Хотелось бы видеть всё слово (фразу) с позиционированием курсора на 1-й символ.
Сравнил поведение EdtFind и стандартного поиска.
Стандартный позиционируется так, чтобы до правой границы всегда оставалось несколько символов.
Так что думаю уместно сообщить о вашем пожелании в тему EdtFind.

Напомню также, что при использовании IncSearch можно воспользоваться курсорными клавишами.
Это конечно отключит режим поиска, но его несложно включить обратно, и восстановить искомую строку с помощью BS.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Пробел ищет, а вот Таб что-то не хочет. Таб проваливается в редактор завершая поиск.
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 »

Если включить регэкспы, то можно искать \t.
Или можно добавить в таблицу xform соответствующую запись: Tab = " " (в кавычках символ табуляции, можно ввести с помощью CtrQ Tab)
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Спасибо, заработало
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

у вас подхват выделенного сделан более агрессивно: достаточно находиться на той же строке для его срабатывания. это сознательно сделано?
Фар делают добрые люди
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 »

ccaid, мешает?
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

непривычно, пока наблюдаю
Фар делают добрые люди
Post Reply

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