2009-06-30 3 views
15

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

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

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

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

Update:

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

UPDATE2

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

Update3

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

+0

звука как-то я сделал бы с поиск-replace, необязательно с регулярным выражением, например replace "(\ b. +? \ b) \ s *" с "$ 1;" –

+0

Мне также будет интересно узнать, как продлить Notepad ++ с помощью плагинов (или какого-либо другого расширяемого текстового редактора) – Justin

+0

Что вы хотите сказать, что предлагаемые решения не экономят ваше время, потому что у вас есть только 5 или 6 строк? Что вы ожидаете от макроса или плагина, о котором вы говорите, и о каких шагах вы хотите сделать? – VVS

ответ

5

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

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

apple 
pear 
banana 
grape 
orange 

Для запятая отдельных линий, вы могли бы перейти к первой строке, нажмите Ctrl + R (начать запись), затем конец, удаление, запятая, а затем Ctrl + R, чтобы остановить запись.

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

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

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

+0

К сожалению, это решение не сэкономит мне время, так как часто это всего лишь 5 или 6 строк, которые мне нужно заменить. – alexn

0

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

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

+0

Да, это поведение, которое я после. Несчастливо, это не спасет меня так много времени, поскольку это часто всего 5 или 6 строк слов. – alexn

+0

PhiLho SciTE действительно скалы. – mahesh

+1

Пробовал с последним Notepad ++, он все еще не делает макросы из диалогов поиска/поиска (возможно, использует возможности макросов Scintilla). Если я чего-то не упущу, я боюсь, что вам нужно написать плагин C++, который немного переполнен для ваших нужд. Слишком плохой АЭС не поддерживает скрипты, как это делает SciTE. Это было бы довольно тривиально в Lua ... – PhiLho

1

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

^\<(.*)\> *$

, а затем заменить слова с \1,

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

9

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

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

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

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

+0

Я собирался предложить такое же решение. Просто открыл этот плагин, и он может сделать много мощного материала. –

1

На основании ответа PhiLho в:

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

    <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 ++ - вы увидите новый макрос в меню «Macro» с ключом ярлык установлен на Alt + Шиф т + R (легко настроить внутри shortcuts.xml)