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

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

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

Post by John Doe »

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

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

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


Актуальная версия: 2.10

User avatar
John Doe
Бюрократ
Posts: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

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: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 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: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

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

Post by John Doe »

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

И что там у вас с поиском слэша не работало?

User avatar
HaRT
Moderator
Posts: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 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: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 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: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

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

Post by Shmuel »

ccaid, попробуйте 27-ю строку заменить на } or F.BTYPE_NONE)
(я скриптом не пользовался пока, совет чисто теоретический).

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

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

Post by ccaid »

Shmuel, помогло, спасибо.
Фар делают добрые люди

buniak_a_h
Posts: 1389
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 95 times
Been thanked: 105 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 23 times

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

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

Post by ccaid »

buniak_a_h, нет, для скриптов от SUSim есть своя тема, там бы я и спрашивал, если что
Фар делают добрые люди

User avatar
HaRT
Moderator
Posts: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 times

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

Post by HaRT »

ccaid wrote:
Wed 16 Jan, 2019 21:41
John Doe, нет ли у вас более новой версии?
Присоединяюсь к вопросу в надежде, что там исправлены ошибки в работе без EdtFind (проистекающие из нежелательного влияния прежде заданных вручную настроек в диалоге поиска/замены).
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

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

Post by John Doe »

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

Шапка не обновлялась, поэтому см. также описание к 2.9.

User avatar
HaRT
Moderator
Posts: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 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: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

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

Post by Shmuel »

Фрагмент RCtrl? наверняка ошибочный, но скобочки не помогут, так как паттерны Lua это не поддерживают.
Но в LuaFAR есть библиотека regex, она поддерживает.

User avatar
John Doe
Бюрократ
Posts: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

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

Post by John Doe »

Указанные ошибки исправлены, спасибо.
HaRT wrote:
Fri 18 Jan, 2019 17:33
А нельзя ли ещё опцию V для Reverse search?
Опишите сценарий использования, учитывая взаимодействие с командами поиска вперёд/назад, в модальном и немодальном режиме (возможно это непринципиально).

User avatar
HaRT
Moderator
Posts: 9230
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 91 times
Been thanked: 193 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: 12589
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 257 times

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

Post by John Doe »

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

Post Reply

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