Notepad ++: kursor poza końcem linii / wirtualne przestrzenie?

11

TL; DR - Jak mogę umożliwić wirtualnym spacjom przesuwanie kursora poza koniec linii tekstu?

Wersja długa - w Notepad ++, gdy próbujesz zaznaczyć (za pomocą myszy) długą linię tekstu, która biegnie poza prawą krawędź okna, powodując jego przewijanie w poziomie, moja mysz czasami przesuwa się lekko w górę lub w dół, aby przesunąć kursor do sąsiedniej (zwykle znacznie krótszej) linii, powodując, że kursor przeskakuje z powrotem w lewo, gdzie kończy się ta sąsiadująca linia; co z kolei przewija okno w poziomie z powrotem w lewo, co utrudnia szybkie dostosowanie i zakończenie przeciągania mojego wyboru.

Niektóre (choć żałośnie nieliczne) edytory tekstu mają opcję „wirtualnych przestrzeni” lub przekreślania poza EOL, aby ułatwić poruszanie myszką / strzałkami bez ograniczania się do istniejącego tekstu / białych znaków.

Jak mogę to zrobić w Notepad ++ (bez włamywania się do źródła)?

acatalept
źródło
1
początek linii, przytrzymaj SHIFT + END, czy wybrano całą linię? Wiem, że to nie to samo, co chciałeś, ale to właśnie robię.
Rob
1
Nie to, o co prosisz, ale problem zniknie z zawijania linii.
Eroen
@Rob: Zasadniczo jest to problem, gdy próbuję wybrać konkretną długą część bardzo długiej linii kodu, ale ta linia jest przeplatana z innymi znacznie krótszymi liniami. Mógłbym także użyć SHIFT + CTRL + STRZAŁKA W PRAWO, aby szybko wybrać z mojego punktu początkowego jedno słowo na raz, Notepad ++ jest całkiem dobry w wykrywaniu znaków dzielących słowa, takich jak kropki, nawiasy itp., Gdy nie ma żadnych rzeczywistych spacji oddzielających słowa (np. w długim odwołaniu do obiektu) np. (javascript):someObjectName.subObject.property['index'](parameter)
acatalept
@Eroen: Cieszę się, że to zasugerowałeś, nie używałem zawijania słów w N ++ od dawna, ponieważ sprowadzał program na kolana z dużymi plikami ... ale w rzeczywistości działa bardzo ładnie nawet dla mojego większego 20k pliki linii, a nawet linie wcięcia na liniach owiniętych;)
acatalept

Odpowiedzi:

14

Coś w rodzaju włamania (wysyła komunikat okna bezpośrednio do kontrolki edycji Scintilla przy uruchomieniu), ale działa świetnie:

  1. Zainstaluj wtyczkę NppExec

  2. Przejdź do Wtyczki -> NppExec -> Wykonaj

  3. Wpisz następujący kod:

    // ensure console stays hidden
    NPP_CONSOLE 0
    
    // enable virtual spaces (cursor past end of line) outside column edit mode
    SCI_SENDMSG 2596 3 0
    
    // SCI_SENDMSG == send message to Scintilla edit control
    // 2596 == the message we're sending is SCI_SETVIRTUALSPACEOPTIONS
    // 3 == send the value (SCVS_RECTANGULARSELECTION | SCVS_USERACCESSIBLE)
    // the default value is 1 (just SCVS_RECTANGULARSELECTION) for
    //   virtual spaces in column select mode only
    // you can find these values by poking around the source code a bit, or
    // see http://www.scintilla.org/ScintillaDoc.html
    
  4. Kliknij przycisk Zapisz u dołu i nadaj skryptowi nazwę

  5. Teraz przejdź do Wtyczki -> NppExec -> Opcje zaawansowane

  6. Po prawej stronie w obszarze „Uruchom ten skrypt po uruchomieniu Notepad ++” wybierz właśnie zapisaną nazwę skryptu

  7. Kliknij OK, zamknij / otwórz ponownie Notepad ++ i ciesz się;)

acatalept
źródło
gdzie są kody takie jak 2596udokumentowane dla innych poleceń scintilla? szturchanie tylko Scintilla.h? obecnie na tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/… ?
n611x007,
Co jest 0w SCI_SENDMSG 2596 3 0?
n611x007,
@naxa: zapoznaj się z dokumentacją Scintilla dla kodów komunikatów, np. scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS (Uważam, że trzeci parametr nie jest używany dla większości z nich, ale musi być ustawiony na 0, a nie pominięty)
acatalept
„Rodzaj włamania” - włamanie oznacza dostęp do czegoś, czego oprogramowanie nie powinno robić. Dla mnie to wygląda jak funkcja.
Natalie Adams,
@Nathan: semantyka jest fajna;) Zasadniczo miałem na myśli to, że użycie wtyczki NppExec do wysyłania komunikatów okna bezpośrednio do kontrolek jest swego rodzaju hackem, a nie czymś, do czego specjalnie zaprojektowano Notepad ++ (oprócz przemyślanego zapewnienia struktury wtyczek do smarowania koła)
acatalept
0

Bez uprawnień administratora zainstaluj NppExec, pobierając bibliotekę DLL i instalując katalog / folder wtyczek npp. Zamknij / otwórz ponownie npp.

Edycja (+2 lata): Nie wiem, czy to się zmieniło, ale teraz (jeśli nie oryginalnie) umieściliśmy folder NppExec w folderze wtyczek npp - z biblioteką DLL w podfolderze NppExec.

Upewnij się także, że wersje pasują do siebie (przypomnij sobie, czy korzystasz z wersji 32-bitowej czy 64-bitowej), a jeśli masz najnowszą wersję (2019), możesz potrzebować NppExec w wersji _PA.

Dlaczego nie mogę zainstalować wtyczki NppExec dla Notepad ++?

Cloink
źródło
Coś się zmieniło w Notepad ++. Wykonania już tam nie ma. Czy są to poprawki?
user215779,