Notepad ++ Выполнить текущую строку в командной строке

Существует аналогичная команда, которую я использую, чтобы открыть текущее выбранное слово в командной строке:

cmd /D "%windir%/system32" /K ""$(CURRENT_WORD)"" 

Есть ли какая-либо команда для открытия текущей строки без выбора какого-либо текста на этой строке вручную?

Ни как запускать внешнюю программу из Notepad ++, ни в документации плагина NppExec не упоминается переменная среды, содержащая текущую строку.

Аналогично, макросы могут выполнять только сообщения Scintilla ( список ), искать и заменять записи и некоторые команды Notepad ++ (недокументированные?), Поэтому нет способа добиться этого с помощью макросов.

Помимо написания собственного плагина, я знаю, как это сделать, используя внешнюю программу. Сценарий AutoHotkey будет делать то, что вы хотите.

Сценарий AutoHotkey:

 ^F5:: WinGetActiveTitle, Title if RegExMatch(Title, "- Notepad\+\+$") { SendPlay {Home}+{End}{F5} SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)" SendPlay {Enter} } else SendPlay ^{F5} return 

Что оно делает:

  • Если Notepad ++ является активным окном, комбинация клавиш Ctrl + F5 выберет текущую строку и выполнит внешнюю команду

    Cmd / D "% windir% / system32" / K "" $ (CURRENT_WORD) ""

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

  • Если Notepad ++ не является активным окном, комбинация клавиш Ctrl + F5 будет вести себя нормально.

Как использовать:

  1. Загрузите и установите последнюю версию.

  2. Сохраните указанный выше сценарий как npp_runline.ahk , используя ваш любимый текстовый редактор.

  3. Дважды щелкните файл, чтобы запустить скрипт.

  4. Если вы хотите, скопируйте сценарий (или ссылку на него) в папку « Startup ».

Как это работает:

  • ^F5:: задает используемую горячую клавишу ( Ctrl + F5 ).

  • WinGetActiveTitle, Title сохраняет заголовок активного окна в переменной Title .

  • RegExMatch(Title, "- Notepad\+\+$") возвращает позицию самого левого вхождения регулярного выражения - Notepad\+\+$ (где \+ – литерал + и $ в конце строки) в Title или ноль, если нет совпадения.

    • Если есть совпадение, блок follwing if... будет выполнен:

      • SendPlay {Home}+{End}{F5} имитирует нажатие Home и Shift + End (выбор текущей строки без пробелов), а затем F5 (открытие диалога Run... ).

      • SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)" входит именно в диалог Run...

      • SendPlay {Enter} имитирует нажатие Enter (завершение диалога Run... ).

    • Если нет совпадения, выполняется следующий блок:

      • SendPlay ^{F5} имитирует нажатие Ctrl + F5 (возврат, если нам нужен ярлык снаружи Notepad ++).
  • return завершает выполнение скрипта в текущей точке.


Смотрите также:

  • Документация AutoHotkey

  • Regular-Expressions.info – Учебное пособие по регулярному выражению, примеры и ссылки – шаблоны регулярных выражений

  • Как удалить интеграцию с оболочкой Notepad ++?
  • Давайте будем гением компьютера.