49

Я хотел бы иметь некоторые grep-подобные функции в Notepad++.

В этой простейшей версии я хотел бы иметь возможность скопировать все строки из текущего буфера, содержащие слово foo в новый буфер. Я могу использовать плагин TextFX, чтобы скрыть все строки без foo , но это не делает всего, что я хочу (он потерян на Alt - Tab , я не могу скопировать только совпадающие строки и т.д.).

4 ответа4

73

Ctrl+F -> перейти на вкладку « Пометить » -> переключить строку «Закладка» -> нажать « Пометить все».

Выберите меню Поиск -> Закладка -> Копировать отмеченные строки.

12

Я просто смотрел на этот же вопрос. Я не уверен, если вы знаете; в диалоговом окне «Найти» вы можете найти все в текущем документе, в результате чего внизу появится всплывающее окно с соответствующими строками. Затем вы можете скопировать это в новый документ.

К сожалению, в результаты включена некоторая посторонняя информация (номер строки и т.д.), Но вы можете отфильтровать ее, используя режим столбца.

2

Другим отличным решением является использование плагина NppExec для добавления команды grep для Notepad++.

Основным преимуществом решения "Закладки" является то, что оно работает намного быстрее, особенно для больших файлов, и вам не нужно изменять исходный файл. Обратите внимание, что вам нужно создать небольшой скрипт один раз, чтобы сделать эту функцию доступной в Notepad++.

Мой пример решения для Windows, и я использую findstr, который является grep-подобным инструментом, доступным на всех машинах Windows. Но вы также можете использовать любой другой клон grep по вашему выбору.

Шаг 1: Установите плагин NppExec

Перейдите в Plugins / Plugin Manager / Show Plugin Manager , прокрутите вниз до NppExec, выберите этот плагин и нажмите Установить. Возможно, вам придется перезагрузить Notepad++ для завершения процесса установки.

Шаг 2. Создайте небольшой скрипт для NppExec

Перейдите в Plugins / NppExec / Execute , введите следующий скрипт и сохраните его как "grep":

SET local OUTFILE = "c:\temp\$(FILE_NAME).temp"
INPUTBOX "Input filter string"
cmd /c findstr $(INPUT) "$(FULL_CURRENT_PATH)" >$(OUTFILE)
NPP_OPEN $(OUTFILE)

(пожалуйста, проверьте еще раз, работает ли путь для OUTFILE в вашей среде)

Шаг 3: Добавьте пункт меню для вашего скрипта (необязательно)

Перейдите в Plugins / NppExec / Advanced Options , выберите сценарий "grep" в разделе « Associated script и нажмите "ОК" для сохранения. Перезапустите Блокнот по запросу NppExec, чтобы завершить добавление нового пункта меню.

Шаг 4. Добавьте ярлык для вашего скрипта (необязательно)

Перейдите в Settings / Shortcut Mapper / Plugin commands , прокрутите вниз, чтобы найти команду скрипта "grep" и определите для нее ярлык. например, ALT-G

-1

Шаг 5: Создать скрипт для быстрого сохранения и grep документа

Перейдите в Plugins / NppExec / Execute, введите следующий скрипт и сохраните его как "grep":

SET local AUTOSAVEFILE = "% tmp%\NpPPautosave.tmp"
SET local OUTFILE = "% tmp%\NpPPautosaveToGrep.temp"
NPP_SAVEAS "% tmp%\NpPPfile.tmp"
INPUTBOX "Входная строка для GREP"
cmd /c findstr $(INPUT) $(AUTOSAVEFILE)> $(OUTFILE)
NPP_OPEN $(OUTFILE)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .