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

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

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

Post by John Doe »

Latest post of the previous page:

HaRT wrote: однако на то, что находится (разумеется, когда файл содержательный), опция влияния не оказывает
Тут оказалось просто: после редизайна диалога поиска в билде 4473 позиции опций изменились, что в скрипте не учтено.
HaRT wrote: пытаясь изолировать проблему с поиском слэша
Что за проблема-то?
Планирую перевыложить скрипт с накопившимися исправлениями.
Last edited by John Doe on Wed 26 Apr, 2017 08:25, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

При использовании встроенного поиска Фара берутся опции Case sensitive, Whole words и Regular expressions, которые выставлены в диалоге поиска, т.е. те, которые были когда-то использованы в предыдущем обычном поиске в этом же редакторе. Я как пользователь их, разумеется, не помню. А сталкиваюсь я с тем, что в результате строка, которая точно есть в файле и которую я набираю по одной букве, просто не находится. :(
Не исправлено ли это часом в неопубликованной версии (новее, чем 2.9)? Если нет, сложно ли при начале инкрементного поиска выставлять эти опции в соответствии с настройками скрипта?
Last edited by HaRT on Wed 23 Aug, 2017 19:36, edited 1 time in total.
Reason: Добавлено упоминание Regular expressions
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Посмотрю в ближайшее время.

И что там у вас с поиском слэша не работало?
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote: Wed 23 Aug, 2017 19:22Посмотрю в ближайшее время.
Спасибо.
John Doe wrote: Wed 23 Aug, 2017 19:22что там у вас с поиском слэша не работало?
Уже и не помню. В последнее время не натыкался.
Фар есть инструмент, а не нянька. © 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, нет ли у вас более новой версии?
а то с текущими версиями Far:

Code: Select all

...Macros\scripts\Editor.IncSearch.lua:21: bad argument #2 to 'Select' (invalid flag)
Фар делают добрые люди
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

ccaid, попробуйте 27-ю строку заменить на } or F.BTYPE_NONE)
(я скриптом не пользовался пока, совет чисто теоретический).
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

Shmuel, помогло, спасибо.
Фар делают добрые люди
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

ccaid wrote: Wed 16 Jan, 2019 21:41 John Doe, нет ли у вас более новой версии?
Извините, что вмешиваюсь... Если Вы имеете в виду скрипт от SUSim, то вот (во вложении - исходный, под спойлером - мой немного переделанный)
Editor_QuickSearch.Lua.rar
(2.79 KiB) Downloaded 157 times
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

buniak_a_h, нет, для скриптов от SUSim есть своя тема, там бы я и спрашивал, если что
Фар делают добрые люди
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

ccaid wrote: Wed 16 Jan, 2019 21:41 John Doe, нет ли у вас более новой версии?
Присоединяюсь к вопросу в надежде, что там исправлены ошибки в работе без EdtFind (проистекающие из нежелательного влияния прежде заданных вручную настроек в диалоге поиска/замены).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

HaRT wrote: Thu 17 Jan, 2019 14:14 исправлены ошибки в работе без EdtFind
Ну если хотите, то вот, добавил костылей:
Скачать

Шапка не обновлялась, поэтому см. также описание к 2.9.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

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: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

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

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

Post by John Doe »

Указанные ошибки исправлены, спасибо.
HaRT wrote: Fri 18 Jan, 2019 17:33 А нельзя ли ещё опцию V для Reverse search?
Опишите сценарий использования, учитывая взаимодействие с командами поиска вперёд/назад, в модальном и немодальном режиме (возможно это непринципиально).
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 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: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

1. Вроде исправил.
2. Инкрементный поиск назад не предусмотрен, всё заточено на "вперёд".
Но уже введённую строку можно в любом направлении искать.
HaRT wrote: Mon 21 Jan, 2019 11:30 поэтому я модальный инкрементный поиск переназначаю на левый Alt (кстати, хотелось бы иметь такую возможность из коробки).
Что именно вы хотите "из коробки"?
Только модальный, или оба?
Post Reply

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