Page 2 of 8

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

Posted: Mon 04 Aug, 2014 23:58
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

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

Posted: Sun 26 Oct, 2014 16:30
by John Doe

Latest post of the previous page:

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

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

Posted: Tue 04 Nov, 2014 16:12
by John Doe
v2.9 alpha
  • В режиме ExtraQuick нажатие BS восстанавливает предыдущую позицию.
  • Новые шорткаты:
    AltRight расширяет выделение до конца слова
    LCtrl и RCtrl — продолжение поиска назад/вперёд (дублируют имеющиеся шорткаты)
  • Выделение цветом всех вхождений настроено на длину подстроки >=2
    Выделение сбрасывается при завершении поиска, чтобы оставить, можно завершить поиск нажатием Alt.
  • Реализован немодальный поиск:
    • Активируется нажатием RAlt+буква (точнее символ слова: \w), или RAltSpace.
      Набирать текст нужно удерживая RAlt.
      При отпускании RAlt поиск завершается.
    • Даже после отпускания вернуться в позицию "до поиска" можно с помощью макроса на RAltBS.
    • Кроме того, поиск можно активировать нажатием RAlt+LCtrl / RAlt+RCtrl.
      В этом случае продолжается предыдущий поиск (назад / вперёд).
    • Доступны те же шорткаты, что и в обычном режиме, за исключением изменения опций.
      Чтобы работал Esc (т.е. Alt-Esc) — можно воспользоваться XKeys.
Update:
Искомая подстрока теперь может содержать двойные кавычки и бэкслеш.

В шапку пока не кладу, ибо альфа (планирую избавиться от костылей).

Update
Функциональность немодального поиска несколько уменьшилась, т.к. в актуальных билдах фара при нажатом Alt перестали распознаваться клавиши LCtrl/RCtrl.. см. 2.10

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

Posted: Tue 04 Nov, 2014 18:55
by Maximus5
Хорошо бы одновременно и русские и английские буквы искать. XLat-ом. Под макролибом у меня так было, удобно.

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

Posted: Wed 05 Nov, 2014 16:01
by John Doe
>Под макролибом у меня так было, удобно.
Именно в том виде это элементарно, но не учитывается ряд ньюансов.
В планах есть.

А какие мысли по поводу немодального поиска? Например, удобно ли правым альтом?

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

Posted: Wed 05 Nov, 2014 19:35
by Maximus5
На счет нюансов...
При попытке начать поиск с двойной кавычки EdtFind кидает exception

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

Posted: Thu 06 Nov, 2014 13:22
by John Doe
Maximus5 wrote: начать поиск с двойной кавычки
Исправил, перевыложил

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

Posted: Thu 04 Dec, 2014 12:08
by ccaid
ни релиз, ни альфа не умеют искать строки с кавычкой ("). поправимо?

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

Posted: Thu 04 Dec, 2014 12:22
by Maximus5
Я переключил режим на стандартный поиск фара. Ищет. Только задалбывает то, что иногда у макроса не получается снять внезапно появившиеся там флажки "Whole words" и "Case sensitive". Чего происходит пока не понял.

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

Posted: Thu 04 Dec, 2014 18:16
by John Doe
ccaid wrote: ни релиз, ни альфа не умеют искать строки с кавычкой ("). поправимо?
А я-то пребывал в уверенности, что пофиксил эту проблему.
Найдите строку str)) и замените на str:gsub('"','""'))).
Maximus5 wrote: иногда у макроса не получается снять внезапно появившиеся там флажки
А как повторить?
Maximus5 wrote: "Whole words"
Только что понял, что для инкрементального поиска это странная опция.

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

Posted: Fri 10 Apr, 2015 16:44
by ccaid
Maximus5, при активации быстрого поиска под ConEmu курсор мыши впадает в фоновый режим. не замечал или не происходит? на чистой установке воспроизводится.

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

Posted: Fri 17 Apr, 2015 15:58
by Maximus5
Опция "Hourglass if not responding". Во время работы макроса считается что фар занят. Например таб переключить низя, и т.п.

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

Posted: Sun 02 Aug, 2015 13:21
by MaxU
а как вводить все регулярные выражения начинающиеся с "\" (BackSlash)?
например: \w+ \s+
в версии (v2.9 alpha): после ввода BackSlash макрос не позволяет ввести ни одного символа
в версии (v2): после ввода BackSlash макрос выпадает в Far и заменяет первую найденную строку символом: \

как это побороть?

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

Posted: Sun 02 Aug, 2015 19:23
by John Doe
MaxU wrote: как это побороть?
Сейчас разве что вставить из буфера обмена...
Скрипт заточен на посимвольную обработку введённой строки, и регэкспы сюда не очень вписываются.
В планах конечно есть, вот только не знаю когда я смогу заняться скриптом снова...

Как временный вариант могу предложить добавить в таблицу actions специальные клавиши:

Code: Select all

  CtrlW=function() return append"\\w" end;
  CtrlS=function() return append"\\s" end;
  CtrlBackSlash=function()
    mf.postmacro(Keys,"End")
    str = far.InputBox(nil,"",nil,"IncSearch",str) or str
    return ""
  end;

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

Posted: Sun 02 Aug, 2015 19:42
by Shmuel
Может быть по нажатию какой-то клавиши переходить в режим ввода без поиска, а по повторному её нажатию начинать поиск?

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

Posted: Sun 02 Aug, 2015 20:14
by John Doe
CtrlBackSlash примерно это и делает, только в диалоге.
(Скорее всего без диалога было бы лучше, но это требует более глубокого ковыряния в коде, чего я себе сейчас позволить не могу).

А в перспективе надеюсь реализовать прозрачную работу, без диалогов, и даже без всяких дополнительных клавиш.

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

Posted: Sun 02 Aug, 2015 20:27
by Shmuel
John Doe wrote: реализовать прозрачную работу, без диалогов, и даже без всяких дополнительных клавиш.
Признаюсь, что данный скрипт я не пробовал, рассуждаю чисто теоретически, но если будут поддерживаться регулярные выражения, то без переключения режима ввода пользователем не обойтись.