Как сделать 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 ++.