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

Что я хочу сделать, так это выбрать несколько строк, содержащих слова, щелкнуть правой кнопкой мыши и щелкнуть пункт меню, например «Запятая отдельно», затем получить все слова в одной строке, разделенной запятой.

Я знаю, что Notepad ++ поддерживает макросы и плагины. Как лучше всего это сделать?

У меня ограниченные навыки C ++.

Обновление:

Чтобы уточнить, мне нужно переформатировать не более 5 или 6 строк слов. Проблема в том, что я делаю это примерно 50 раз в день, поэтому было бы здорово ускорить это. Есть ли другое приложение, которое может сделать это за меня?

Обновление2

Спасибо за ответы. Я собираюсь попробовать создать плагин Notepad ++.

Обновление3

Кто-нибудь знает .NET-обертку для создания плагина Notepad ++? Может быть, это новый вопрос.

17
alexn 30 Июн 2009 в 12:23

6 ответов

Лучший ответ

Я часто использую макро-функцию Notepad ++ для таких вещей.

Например. Скажем, у вас есть это:

apple
pear
banana
grape
orange

Чтобы разделить строки запятыми, вы можете перейти к первой строке, нажать ctrl + r (начать запись), затем завершить, удалить, запятую, затем снова ctrl + r, чтобы остановить запись.

Затем несколько раз нажмите control + p (воспроизведение записи), пока не получите желаемое. Если я обрабатываю большой файл, я просто удерживаю его, а затем ctrl + z возвращаюсь назад, если захожу слишком далеко.

Вы не можете сохранить свой макрос на потом, но что-то такое простое легко сделать снова.

Изменить. На самом деле оказывается, что вы можете сохранить макрос на будущее и даже назначить ему горячую клавишу. Просто запишите макрос, а затем перейдите Macro -> Save current recorded macro.

5
Blorgbeard 21 Июл 2009 в 22:17

Теперь вы можете легко сделать это с помощью плагина Python Scripting для Notepad ++.

Просто добавьте сценарий с чем-то вроде

text = editor.getSelText()
text = text.replace(' ', ',')
editor.replaceSel(text)

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

8
Dave Brotherstone 23 Авг 2010 в 13:55

Поскольку в своем последнем редактировании он просит использовать .NET-подход, начнем:

Шаблон плагина Notepad ++ .NET для Visual Studio и SharpDevelop

3
ufo 23 Май 2012 в 07:50

На самом деле в Notepad ++ вы должны использовать эту строку для сопоставления одного слова в строке, возможно, с конечными пробелами:

^\<(.*)\> *$

А затем вы заменяете слова на \1,

Я пробовал сделать это сам, все работало, за исключением того, что после этого вам нужно переключиться из режима поиска регулярных выражений в расширенный и удалить все \r\n или \n в зависимости от окончания строки.

1
Malcolm 30 Июн 2009 в 09:10

Основываясь на ответе PhiLho:

  1. Закрыть Блокнот ++
  2. Отредактируйте% AppData% \ Notepad ++ \ shortcuts.xml в любом текстовом редакторе, кроме N ++
  3. Найдите тег и вставьте его в код ниже:

    <Macro name="Lines to comma separated text" Ctrl="no" Alt="yes" Shift="yes" Key="82">
        <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
        <Action type="3" message="1601" wParam="0" lParam="0" sParam="\r\n" />
        <Action type="3" message="1625" wParam="0" lParam="1" sParam="" />
        <Action type="3" message="1602" wParam="0" lParam="0" sParam="," />
        <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
        <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
    </Macro>
    
  4. Сохраните, закройте и откройте Notepad ++ - вы увидите новый макрос в меню «Макрос» с сочетанием клавиш, установленным на Alt + Shift + R (легко настроить внутри shortcuts.xml)
1
balver 30 Окт 2011 в 13:28

Давай посмотрим. У меня 5 слов. Я их выбираю. Ctrl + H. Отметьте расширенный и входящий выбор. Найдите '\ r \ n', замените на ',', нажмите "Заменить все". Я получил в основном желаемый результат (с дополнительной запятой в конце).

Это то, что вы хотите? Возможно, вы сможете сделать из этого макрос, я мало что знаю об этой возможности (на самом деле я в основном использую SciTE).

0
PhiLho 30 Июн 2009 в 08:35