Notepad ++ Uruchom bieżącą linię w wierszu polecenia

2

Istnieje podobne polecenie, którego używam do otwarcia aktualnie wybranego słowa w wierszu polecenia:

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

Czy istnieje polecenie otwarcia bieżącego wiersza bez ręcznego zaznaczania tekstu w tym wierszu?

TMRW
źródło

Odpowiedzi:

1

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ć:

  1. Pobierz i zainstaluj najnowszą wersję.

  2. Zapisz powyższy skrypt jako npp_runline.ahk, używając ulubionego edytora tekstu.

  3. Kliknij dwukrotnie plik, aby uruchomić skrypt.

  4. Jeśli chcesz, skopiuj skrypt (lub link do niego) w Startupfolderze.

Jak to działa:

  • ^F5::określa używany klawisz skrótu ( Ctrl+ F5).

  • WinGetActiveTitle, Titleprzechowuje 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 Titlelub 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 elsewykonanie 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ż:

Dennis
źródło
Przepraszam, ale to tylko daje mi numer linii. Potrzebuję zawartości z tego wiersza.
TMRW
Zgodnie z tym tematem: superuser.com/questions/424559 /... pomyślałem, że mogę zrobić HOME, HOME, SHIFT + END, a następnie uruchomić Open w CMD za pomocą klawisza skrótu (w moim przypadku CTRL + SHIFT + C) i umieścić to wszystko w makro i makro w menu kontekstowym. Niestety z jakiegoś powodu nie zadziałało. Tekst w bieżącym wierszu zostaje zaznaczony, ale nigdy nie otwiera się w oknie CMD ...
TMRW
Przegapiłem numer słowa . Zaktualizowana odpowiedź została przetestowana i powinna działać.
Dennis