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.
Skrypt 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
Co to robi:
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.
Jak używać:
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.
Jak to działa:
^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ż: