Odpowiedzi:
Ani Jak uruchomić zewnętrzny program z Notepad ++, ani dokumentacja wtyczki NppExec nie wspominają o zmiennej środowiskowej zawierającej bieżący wiersz.
Podobnie, makra mogą tylko wykonywać wiadomości Scintilla ( lista ), wyszukiwać i zamieniać nagrania oraz niektóre polecenia zdefiniowane w Notepad ++ (nieudokumentowane?), Więc nie można tego osiągnąć za pomocą makr.
Oprócz pisania własnych wtyczki, tylko sposób ja wiem, jak to zrobić jest za pomocą zewnętrznego programu. Skrypt AutoHotkey zrobi to, co chcesz.
^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
Jeśli aktywnym oknem jest Notepad ++, kombinacja klawiszy Ctrl+ F5wybierze bieżącą linię i wykona polecenie zewnętrzne
cmd / D "% windir% / system32" / K "" $ (CURRENT_WORD) ""
$(CURRENT_WORD)
teraz zawiera całą linię, ponieważ została wybrana. Jedyną wadą jest to, że utracisz bieżącą pozycję kursora, ponieważ skrypt pozostawi wybraną bieżącą linię.
Jeśli Notepad ++ nie jest aktywnym oknem, kombinacja klawiszy Ctrl+ F5będzie działać normalnie.
Pobierz i zainstaluj najnowszą wersję.
Zapisz powyższy skrypt jako npp_runline.ahk
, używając ulubionego edytora tekstu.
Kliknij dwukrotnie plik, aby uruchomić skrypt.
Jeśli chcesz, skopiuj skrypt (lub link do niego) w Startup
folderze.
^F5::
określa używany klawisz skrótu ( Ctrl+ F5).
WinGetActiveTitle, Title
przechowuje tytuł aktywnego okna w zmiennej Title
.
RegExMatch(Title, "- Notepad\+\+$")
zwraca pozycję wystąpienia wyrażenia regularnego znajdującego się najbardziej na lewo - Notepad\+\+$
(gdzie \+
jest literał +
i $
na końcu ciągu) w Title
lub zero, jeśli nie ma dopasowania.
W przypadku dopasowania następuje śledzenie bloku if...
:
SendPlay {Home}+{End}{F5}
symuluje naciśnięcie Homei Shift+ End(wybranie bieżącej linii bez wiodących białych znaków), a następnie F5(otwarcie Run...
dialogu).
SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)"
wchodzi właśnie w ten Run...
dialog.
SendPlay {Enter}
symuluje naciśnięcie Enter(zakończenie Run...
dialogu).
Jeśli nie ma dopasowania, następuje else
wykonanie następującego bloku :
SendPlay ^{F5}
symuluje naciśnięcie Ctrl+ F5(cofnięcie, jeśli potrzebujemy skrótu poza Notepad ++).return
kończy wykonywanie skryptu w bieżącym punkcie.
Zobacz też: