Графічний функціонал для Notepad ++?


52

Я хотів би мати функцію греп-подібного функціоналу в Notepad ++.

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

Відповіді:


79

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

Виберіть меню Пошук -> Закладка -> Копіювати рядки із закладками .


5
Приємно, дякую. Ви можете "вирізати закладені лінії" і для бідного чоловіка grep -v.
ARRG

2
У пізніших версіях, наприклад, 5.4.5, немає жодної вкладки «Позначити». Натомість на вкладці "Знайти" є прапорець "Позначити рядок". І "Копіювати рядки, що зберігаються в пам'яті" прямо в меню "Пошук".
Пітер Мортенсен

@ARRG Не вдається знайти відрізані закладки або Копіювати закладені рядки в поточній версії, де це?
Ніколя Тері

Працюючи як Чарівність :-)
Sundararaj Govindasamy

12

Я просто розглядав це саме запитання. Я не впевнений, чи знаєте ви; у діалоговому вікні "Знайти" ви можете знайти "Все в поточному документі", що спливе вікно внизу, де відображаються відповідні рядки. Потім ви можете скопіювати це в новий документ.

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


1
Додані номери рядків можуть бути навіть особливістю :)
Frank Meulenaar

2
Цей плагін може вам стати корисним code.google.com/p/searchplus
Amarghosh

@Amarghosh Хороший плагін, але йому не вистачає ергономічності (чому кнопки та відсутні комбінації клавіш?). Хороший улов :)
Benj

@Benji Alt-Q запустить плагін. Незважаючи на те, що у вікні плагіна немає клавіш швидкого доступу, увімкнено основну навігацію по вкладках. Якщо інтерес до плагіна буде достатньо, я спробую додати більше функцій, оскільки отримаю певний час. Дякую за відгук :)
Amarghosh

2

Ще одне чудове рішення - використовувати плагін NppExec, щоб додати команду grep для Notepad ++.

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

Мій приклад рішення - для Windows, і я використовую Findstr , який є інструментом командного вигляду , що нагадує греп , який доступний на всіх машинах Windows. Але ви, звичайно, також можете використовувати будь-який інший греп-клон на ваш вибір.

Крок 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і натисніть кнопку OK, щоб зберегти. Перезапустіть Блокнот за запитом NppExec, щоб завершити додавання нового пункту меню.

Крок 4: Додайте ярлик для свого сценарію (необов’язково)

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


Перш за все, дякую за чудову відповідь, яку очікували роки, аби її проголосили ...: -) Я подумав, що у мене виникли деякі проблеми із сценарієм, це не вийшло. Тоді я помітив, що ми повинні пристосувати шляхи тощо, але ви цього прямо не згадали, тому я просто копіював сліпо! Я працюю так швидко, що сповільнює мене: -)
пгр

велике спасибі за відгуки. Я додам це до своєї відповіді.
Ерік Калькокен

Ще одна невелика примітка: $(FULL_CURRENT_PATH)не поверне жоден шлях, якщо файл ще не збережено. Ви можете очікувати, що він десь буде проживати (тимчасовий каталог?), Але не дуже. Ця ситуація із збереженим файлом може бути досить поширеною, ви просто вставте щось із журналу, щоб зібрати його ... ми можемо вдосконалити цей скрипт, щоб зберегти файл, якщо він ще не збережений - але для простоти я просто нагадаю себе зберегти вручну перед прив’язкою. Дякую.
пгр

Чи працює це, якщо рядок пошуку містить пробіли? чи інших спеціальних символів?
G-Man каже: "Відновіть Моніку"

Так, це працює
Ерік Калкокен

-1

Крок 5: Створіть сценарій для швидкого збереження та копіювання документа

Перейдіть до плагінів / NppExec / Execute, введіть наступний сценарій і збережіть його як "grep":

SET local AUTOSAVEFILE = "% tmp% \ NpPPautosave.tmp"
SET local OUTFILE = "% tmp% \ NpPPautosaveToGrep.temp"
NPP_SAVEAS "% tmp% \ NpPPfile.tmp"
INPUTBOX "Вхідний рядок для GREP"
INDP cd find (cd find) ) $ (AUTOSAVEFILE)> $ (OUTFILE)
NPP_OPEN $ (OUTFILE)


Де кроки 1, 2, 3 і 4?
Pierre.Vriens

(1) Ми вважаємо за краще, наскільки це можливо, відповіді окремо. Схоже, є (принаймні) один крок, який потрібно зробити, перш ніж хтось зможе скористатися вашою відповіддю (підказка: Крок 1); будь ласка, включіть його у свою відповідь. (2) Дуже сильно здається, що ваша відповідь стоїть на плечах відповіді Еріка Калкокена . Якщо ви збираєтесь це робити, вам слід прямо сказати. … (Продовження)
G-Man каже: «Відновити Моніку»

(Продовження)… (3) Чи краща ваша відповідь, ніж Ерік? Якщо так, то поясніть, як і чому. (Насправді, було б добре, якби ви пояснили, що робить відповідь, і як її використати.) Якщо ні, то чому ви її опублікували? (4) Чи вважаєте ви, що якось вищим є використання жорсткого кодування вихідного імені файлу, а не того, яке засноване на поточному імені файлу? (5) Чи є якась перевага для запуску findstrавтозахисного файлу, а не поточного файлу? (6) Чому у вашій відповіді використовується і те, C:\temp і C:\tmp? …… Будь ласка, не відповідайте на коментарі; відредагуйте свою відповідь, щоб зробити її більш зрозумілою та повною.
G-Man каже: "Відновіть Моніку"

(1) "один крок, який потрібно зробити перед кимось" - всі Ерік ковтає від 1 до 4. (2) Ви повинні мати 50 репутацій для коментарів. (коментувати повідомлення Еріка) (3) Так, моя відповідь невелика, тому що відповідь Еріка не працює, перш ніж документ буде збережено на жорсткий диск. Я не хочу зберегти тимчасовий файл лише для того, щоб отримати його. "що відповідь робить і як її використовувати" - мій код просто зберігає відкритий текст у блокноті ++ до тимчасового файлу в hdd. Цей рядок "NPP_SAVEAS" просто автоматично зберігає текст на hdd. (4) Ні! точний ні. (5) Так! Ядро Erik не працює, перш ніж зберегти на жорсткому диску, подивіться на мою (3) відповідь.
Касуміру

(6) Сорі, я поспішав і помилявся, у мене windows cygwin мають tmp і temp dirs. "Будь ласка, не відповідайте на коментарі" - sory, але я написав свою відповідь, перш ніж прочитати цей коментар
Kasumiru
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.