Как сделать Notepad ++ run script на основе его имени?

Я хочу сделать notepad ++ запустить команду ruby ​​{filename_here}, если текущее имя файла заканчивается на .rb и "perl {filename_here}", если оно заканчивается на .pl. Я пытался использовать плагин NppExec, но он не может делать условные вещи, поэтому я написал bat

@echo off

if /i %~sx1 == .pl perl "%~f1"
if /i %~sx1 == .rb ruby "%~f1"
if /i %~sx1 == .php php "%~f1"

Теперь я могу использовать его из командной строки, например C:\Program Files\Notepad ++ > runcript "D\pl.pl", и он отлично работает. Теперь, как я могу связать некоторый ключ в Notepad ++ с "runcript $(FULL_CURRENT_PATH)"? Я попытался использовать меню Run- > Run (F5), но он не работает.

Ответы

Ответ 1

Вам нужно поместить имя файла в конец команды. В диалоговом окне Run (F5) попробуйте следующее:

runscript $(FULL_CURRENT_PATH)

Если вы хотите проверить это, вы можете положить & pause в конец, просто чтобы убедиться, что это сработало.

Вы также можете немного настроить свой script так, чтобы каждый файл не тестировался для каждого расширения, используя ужасную команду GOTO с надписями расширения файлов:

@echo off
GOTO %~sx1
:.pl
  perl "%~f1"
  GOTO end
:.rb
  ruby "%~f1"
  GOTO end
:.php
  php "%~f1"
  GOTO end
:end

Ответ 2

В блокноте ++ версии 6.2, работающем в Windows, просто используйте "$ (FULL_CURRENT_PATH)" , с кавычками, чтобы файл был открыт с использованием программы по умолчанию, связанной с файлом. Итак, убедитесь, что "edit with notepad ++" НЕ действие двойного щелчка по умолчанию.

Ответ 3

У меня были проблемы с тем, чтобы он работал так, чтобы он открывал окно оболочки, когда я смотрю, что он сделал. Включение "& pause" в конце не помогло, пока я не добавил cmd /c в начале:

cmd /c c:\php\php.exe -l "$(FULL_CURRENT_PATH)" & pauseудаp >

Чтобы сохранить результаты команды на экране, вы можете использовать /k switch, как было предложено Джорджем: cmd /k c:\php\php.exe -l "$(FULL_CURRENT_PATH)"

Это отлично работает, я использую его для быстрой проверки синтаксиса в Notepad ++.

Ответ 4

Вы можете попробовать npp_exec, используя следующий script:

NPP_SAVE
SET Executer = execute$(EXT_PART)
NPP_EXEC "$(Executer)"

И затем используйте script с именем execute.rb:

perl $(FULL_CURRENT_PATH) //or something like that

этот метод описан здесь

Ответ 5

Существует плагин под названием RunMe, который может открыть текущий файл в программе по умолчанию. Это лучшее решение, чем команда $(FULL_CURRENT_PATH), потому что она меняет текущий каталог на путь к файлу и эта команда запускает файл в пути N ++.