Notepad не работает поиск по всем записям

Обновлено: 03.07.2024

Я работаю с текстовым редактором NotePad++, окно "Результаты поиска" больше не отображается, я попытался открыть его из меню (Окно результатов поиска F7), но оно, похоже, не имеет никакого эффекта, как я могу его восстановить?

Похоже, что окно "Результаты поиска" находится за пределами экрана, самый простой способ вернуть его - стереть настройки notepad++, вы можете удалить папку% appdata%\notepad++, начать снова notepad++, она должна появится сейчас

Для меня достаточно было удалить% appdata%\Notepad++\config.xml (не всю папку).

  1. Закрыть Notepad++
  2. Открыть папку% appdata%\Notepad++
  3. Удалить (или переименовать в случае, если вы хотите создать резервную копию) config.xml
  4. Начать Notepad++

Это работает для меня без удаления %appdata%/Notepad++ который удаляет выделенные темы.

  1. искать любой шаблон: это так, что фокус будет на этом невидимом окне результатов поиска.
  2. затем нажмите Alt + Space, M
  3. двигайте мышью, пока не появится окно результатов поиска.
  4. поместите окно в желаемое положение.
  5. нажмите Enter .

Хотя удаление %appdata%\Notepad++\config.xml работает, вы также потеряете многие другие настройки.

После некоторых экспериментов я обнаружил, что если я просто удалю следующую строку

<PluginDlg pluginName="dummy" curr="4" prev="3" isVisible="yes"/>

в файле %appdata%\Notepad++\config.xml окно "Найти результат" возвращается к стыковке в нижней половине окна Notepad++.

Окно переместилось в крайнюю нижнюю часть экрана NotePad++. Я просто должен был перетащить это.

Это зависит от того, насколько серьезным является изменение настроек. Иногда он просто скрывается, потому что вы подтолкнули его к панели задач. Итак, переходим к концу, и когда курсор становится размерным изображением, перетащите окно "Результаты поиска".

В некоторых случаях окно было вытащено и закрыто. Вам нужно избавиться от пользовательских настроек. Попробуйте уничтожить

Последнее средство: установите его и не забудьте подтвердить удаление пользовательских настроек. Сначала удалить

И это показало назад.

Я случайно установил переключатель "Всегда" внутри параметра прозрачности внутри окна "Найти", что сделало его постоянно прозрачным. Я просто свернул все окна на рабочем столе и открыл окно notepad++, а затем нажал кнопку восстановления рядом с кнопкой закрытия, чтобы уменьшить окно notepad++, а затем я мог видеть окно поиска с постоянной прозрачностью рядом с окном и снова щелкнул параметр "потерять фокус" в прозрачности.

Окно поиска на самом деле есть, но имеет высоту ноль. Наведите указатель мыши на верхнюю часть строки состояния, и вы увидите рамку окна. Перетащите его, и появится окно поиска!

Пробовал переустановить (думал может я что-то нажал случайно) - не помогло.

Собственно возможно кто-то знает как вернуть опцию? В настройках ничего такого не нашел.



Скрин зря обрезали. Вот там в столбце слева, где галочка "Зациклить поиск" - самый первый пункт Backward direction - это оно.

p.s. а вообще хз зачем этот сделали, но эта фигня уже давно.

sergv:
Скрин зря обрезали. Вот там в столбце слева, где галочка "Зациклить поиск" - самый первый пункт Backward direction - это оно.

p.s. а вообще хз зачем этот сделали, но эта фигня уже давно.

Не помогает, может быть влияет windows server 😕



А зачем Вы все галочки-то понаставили? )

Первая галочка будет искать в обратном от позиции курсора направлении. Снимаете - будет искать вниз.

sergv:
А зачем Вы все галочки-то понаставили? )

Первая галочка будет искать в обратном от позиции курсора направлении. Снимаете - будет искать вниз.

Он просто не понял, что функцию вниз/вверх убрали ВООБЩЕ. Навсегда, её больше нет и не будет.

Вместо неё добавили галочку: Backward direction (в обратном поряде) Стандартно внизу, если галочку ставить то будет вверх.

LEOnidUKG:
Он просто не понял, что функцию вниз/вверх убрали ВООБЩЕ. Навсегда, её больше нет и не будет.
Вместо неё добавили галочку: Backward direction (в обратном поряде) Стандартно внизу, если галочку ставить то будет вверх.

Теперь понятно) Галочки все поставил что б наверняка ☝

Раз такие интересные обновы, то закину все же старую версию, с "вверх" и "вниз" значительно удобней.

venom777:
Галочки все поставил что б наверняка

Хм, Вы же прочитайте их предназначение, тем более, что они на русском языке. Если таких условий не будет - и искать ничего не будет. Очевидно же.


В стандартном блокноте для всех версий Windows, начиная примерно с 2001 года, имеется ошибка, про которую практически все знают, но никто не собирается её исправлять. И это понятно, ведь это не критическая уязвимость, ничьей безопасности она не угрожает. Да и пользуется ли кто блокнотом вообще?

Тем не менее, сам факт довольно странный, поэтому мы попробуем найти эту ошибку в коде 64-битного и 32-битного notepad.exe от windows 7, исправим её, и выясним наконец, почему же она возникла. Заключается ошибка в следующем:

Если в блокноте включена опция «перенос по словам» (word wrap), то после сохранения файла начинаются всевозможные глюки: строки начинают разъезжаться, курсор улетает, текст вводится не туда, куда вы ожидаете, и так далее.

Для начала попытаемся поточнее выяснить, что же происходит. Откроем или введём какой-нибудь текст с длинными строками, чтобы они переносились. Сохраним файл. Если теперь попытаться его редактировать, например, добавив слово «синими», строки будут переноситься неправильно, ломая форматирование:


Если уменьшать окно блокнота, строки разрезаются (это видно на заглавной картинке), а при растягивании остаются на месте, не заполняя увеличивающееся окно. Как будто в каждой строке появился жесткий «перевод строки» в том месте, где она заканчивалась в момент сохранения. Видимо текст каким-то образом портится в памяти:


Если же теперь снова сохранить файл, станет ещё хуже. Все строки переформатируются, но окно не обновится. Поэтому курсор может переместиться в другое место, а если начать вводить текст, окажется, что вы вводите его не в то место, где находится курсор, а совсем в другое. Программисты, которые писали notepad, рассуждали логично: при сохранении файла ничего в окне не должно поменяться, поэтому и нет смысла его обновлять. Но в нашем случае с учётом этой ошибки весь текст меняется. Воспроизвести ситуацию может каждый пользователь windows, потому что последняя версия, где этой ошибки не было — Windows'98, и вряд ли у кого она ещё осталась.

Итак, по всей видимости, при сохранении файла что-то идёт не так и текст портится. Как найти это место в коде? Откроем notepad.exe в каком-нибудь отладчике. Как известно, в 64-битной системе для совместимости имеется два блокнота: 32- и 64-битный, надо не перепутать их.

Введём текст, на котором легко будет увидеть, как он портится при переносе строк. Наберём в одну строку «first text line second text line», а затем уменьшим окно так, чтобы она разрезалась посередине.


Резонно будет предположить, что запись делается с помощью функции WriteFile. Оказывается, она вызывается в коде целых 6 раз. Недолго думая, поставим точки останова на все 6 вызовов. Запускаем блокнот и нажимаем «сохранить». Выполнение останавливается здесь:


Посмотрим все регистры, где содержатся параметры вызова. В rcx у нас 104, это непонятно что. A rdx = 002D45E0, это похоже на адрес в памяти. Посмотрим, что там.


Отлично. Отсюда у нас идёт запись. Попробуем выполнить код дальше, чтобы посмотреть, где он портится. Однако почти сразу данные затираются, а это значит, что это всего лишь временный буфер, а сам текст хранится где-то ещё. Посмотрим выше по программе.


Ага, перед сохранением текст видимо преобразовывается из многобайтовой кодировки в однобайтовую. Точно так же, как в прошлый раз, посмотрим параметры. rax = 002D45E0, здесь у нас пока нули. Это как раз то место, куда попадёт результат. esi = 20, это длина текста. есх = 4еЗ, без комментариев. edx = 400, то же самое. А вот r8 = 002D6780:


Снова продолжим выполнение, наблюдая за содержимым этого участка памяти. Через несколько десятков команд мы выходим из подпрограммы, выполняются какие-то переходы, вызовы, но мы, не обращая на это внимания, продолжаем давить на «step over», выполняя код по шагам, и следя только за окном с текстом. И вот в какой-то момент он изменяется. Как видим, между 1 и 2 строкой появились коды 0d, 0d, 0a:


Как обычно бывает, мы проскочили нужную команду, постоянно давя на кнопку, поэтому придётся повторить всё ещё раз, запомнив, где примерно это произошло. Теперь по мере приближения к нужному месту в коде, замедляемся, и точно определяем, что текст испортился вот на этом вызове:


Можно попробовать, что будет, если не делать этот вызов. Снова доходим до этого места, и прямо тут, в отладке, изменяем RIP (регистр, где хранится адрес выполняемого в данный момент кода) на 00000000FFA38EE1, как будто мы пропустили этот call, который нам всё испортил. Удивительно, всё работает, текст не ломается!

Тут надо сказать, что в таких случаях обычно не разбираются, что это за подпрограмма, что она делает и зачем, а просто выкидывают её из EXE-файла. Это можно сделать разными способами, например, забить её всю NOP'ами, или изменить условный переход по равенству «je», который так кстати имеется сразу перед ней, на безусловный «jmp».


Параметр wParam: true — вставить символы, false — удалить их.


Где же здесь параметр, равный 1? Всё очень просто — он в регистре r8. Для сокращения кода компилятор никогда не использует прямую пересылку нуля в регистры. Такая команда занимает б байтов: 2 байта код операции, 4 байта — 32-битный ноль. Вместо этого регистр XOR-ится сам с собой, в итоге получается ноль, и это занимает всего 3 байта. После этого r9, который равен нулю, пересылается в r8 с добавлением единицы (выделена зеленым). Эта операция тоже занимает всего 4 байта. Вот эту зеленую 1 нам и надо поменять на 0, и тогда текст не будет портиться.

А теперь найдём эту же процедуру в 32-битной версии блокнота. Если не хочется повторять все те же манипуляции с отладкой, её можно найти простым поиском числа 0C8h.



Программа Notepad++ - это отличный и свободно распространяемый текстовый редактор.

Поиск текста по нескольким файлам в Notepad++

В данной статье будет показано, как с помощью этой программы можно найти фразу среди нескольких документов.

К примеру, если вспомнилась какая-нибудь цитата из книги, но никак не удается вспомнить, из какой именно, можно воспользоваться поиском по тексту сразу среди нескольких книг.

Шаг 1. Поместите нужные текстовые файлы (поддерживаются любые текстовые форматы, кроме закрытых, например, MS Word) в один каталог. В данном примере мы поместили в общую папку несколько книг:


Шаг 2. Откройте текстовый редактор Notepad++.


Шаг 3. Откройте меню "Поиск" - "Найти в файлах" либо нажмите "Ctrl+Shift+F". Откроется окно:


Шаг 4. В поле "Найти" введите фразу, которую требуется найти в текстовых файлах.

Шаг 5. Затем нажмите кнопку с многоточием справа от поля "Папка" и укажите каталог, в котором находятся файлы, по которым будет выполняться поиск.

Текстовый редактор Notepad++ умеет также искать и по файлам во вложенных папках.

Для этого должна стоять галочка напротив пункта "Во всех подпапках".

Если необходимо учитывать регистр букв в поисковой фразе (то есть программа будет находить текст точно так, как указано в поле "Найти"), то убедитесь, что галочка "Учитывать регистр" установлена.

В данном случае окно "Найти в файлах" было заполнено так:



Процесс поиска текста в файлах в программе Notepad++

Просмотр результатов поиска

Сразу после завершения поиска нужного текста программа Notepad++ отобразит результаты в отдельной области окна:


Здесь фиолетовым подсвечен текст, по которому выполнялся поиск, а в скобках указано, сколько найдено совпадений и в каком количестве текстовых файлов.

Зеленым подсвечен полный адрес расположения на жестком диске файла, в котором обнаружена нужная строка. Горизонтальная полоса прокрутки позволяет увидеть полный адрес файла.

Ниже показан номер строки в найденном файле, в котором располагается обнаруженный текст, после двоеточия - строка полностью. Сам поисковый запрос подсвечен желтым фоном. Чтобы увидеть его, воспользуйтесь горизонтальной прокруткой:


Чтобы открыть файл, в котором найден текст, дважды кликните по найденной строке левой кнопкой мыши. Программа Notepad++ откроет файл с жесткого диска, прокрутит до нужной строки и выделит найденный текст:


Таким образом, текстовый файл, содержащий искомый текст, был найден.

Если у вас остались вопросы, предлагаем воспользоваться формой комментариев.

Если статья показалась вам интересной, пожалуйста, расскажите о ней своим друзьям с помощью социальных закладок (справа вверху).


Большинство результатов поиска, которые возвращают несколько результатов будут отображаться в закреплённой панели (более подробно смотрите Закреплённые панели). Результаты будут сортированы по файлам и по номеру строки, и могут быть свернуты для каждого файла ( двойным кликом на имени) (также смотрите Сворачивание).

Команды, которые используют вывод в окно результатов:

  • Найти все во всех открытых документах на вкладке поиска Найти
  • Найти все в текущем документе на вкладке поиска Найти
  • Найти все на вкладке поиска Найти в файлах

Результаты в окне результатов поиска могут быть удалены клавишей DEL, отдельно выбранную строку, файл или сессию поиска. Результатами можно управлять используя контекстное меню, вызвав его правой кнопкой мыши. Кроме того, текст этого окна является обычным текстом, который может быть скопирован и вставлен для дальнейших действий с ним. Двойной клик по строке в результатах откроет этот файл в Notepad++ и перейдёт к соответствующей строке. Используя Open All (Открыть все) в контекстном меню приведёт к открытию всех файлов находящихся в окне результатов поиска, свёрнутых или развёрнутых.

Поиск→Показать окно результатов поиска показывает это окно, если оно скрыто и не пустое(?), и переключает фокус между ним и главным окном Notepad++. Когда окно результатов поиска скрыто, навигацию по результатам поиска можно осуществлять используя Перейти к следующему найденному и Перейти к предыдущему найденному .

Результаты подсвечены в зависимости от типа элементов текста. Чтобы изменить эти цвета смотрите Определение стилей. .

Формат результатов поиска

Корневая строка (см. рисунок):
Search "filename" (492 hits in 41 files) - содержит искомый текст, общее число найденных вхождений и число файлов, в которых найдены вхождения. Каждый новый поиск сопровождается одной корневой строкой.

Читайте также: