Notepad ++: Cursor über Zeilenende / virtuelle Leerzeichen hinaus?


11

TL; DR - Wie kann ich virtuellen Räumen ermöglichen, den Cursor über das Ende einer Textzeile hinaus zu bewegen?

Lange Version - Wenn Sie in Notepad ++ versuchen, (mit der Maus) eine lange Textzeile auszuwählen, die über den rechten Rand des Fensters hinausragt und einen horizontalen Bildlauf bewirkt, bewegt sich meine Maus manchmal leicht nach oben oder unten, um den Cursor zu bewegen auf die benachbarte (normalerweise viel kürzere) Linie, wodurch der Cursor an der Stelle, an der diese benachbarte Linie endet, nach links zurückschnappt; Dadurch wird das Fenster horizontal nach links zurückgescrollt, was es schwierig macht, meine Auswahl schnell neu einzustellen und fertig herauszuziehen.

Einige (wenn auch äußerst wenige) Texteditoren verfügen über eine Option für "virtuelle Räume" oder das Fluchen hinter der EOL, um das Bewegen mit der Maus oder dem Pfeil zu vereinfachen, ohne auf vorhandenen Text / Leerzeichen beschränkt zu sein.

Wie kann ich dies in Notepad ++ erreichen (ohne die Quelle selbst zu hacken)?


1
Zeilenanfang, UMSCHALT + ENDE gedrückt halten, die gesamte Zeile ausgewählt? Ich weiß, es ist nicht dasselbe wie das, was du wolltest, aber es ist das, was ich tue.
Rob

1
Nicht das, was Sie fragen, aber das Problem würde mit dem Zeilenumbruch verschwinden.
Eroen

@Rob: Dies ist im Allgemeinen ein Problem, wenn ich versuche, einen bestimmten langen Teil einer sehr langen Codezeile auszuwählen, aber diese Zeile ist mit anderen viel kürzeren Zeilen vermischt. Ich könnte auch UMSCHALT + STRG + RECHTS verwenden, um von meinem Startpunkt aus schnell ein Wort nach dem anderen auszuwählen. Notepad ++ ist ziemlich gut darin, Wortumbruchzeichen wie Punkte, Klammern usw. zu erkennen, wenn keine tatsächlichen Leerzeichen voneinander getrennt sind Wörter (wie in einer langen Objektreferenz) zB (Javascript):someObjectName.subObject.property['index'](parameter)
acatalept

@Eroen: Ich bin froh, dass Sie dies vorgeschlagen haben. Ich habe in N ++ schon lange keinen Zeilenumbruch mehr verwendet, da es das Programm mit großen Dateien in die Knie gezwungen hat ... aber es funktioniert sogar für meine größeren 20.000 sehr gut
Zeilendateien

Antworten:


14

Eine Art Hack (sendet beim Start eine Fenstermeldung direkt an das Scintilla-Bearbeitungssteuerelement), funktioniert aber hervorragend:

  1. Installieren Sie das NppExec-Plugin

  2. Gehen Sie zu Plugins -> NppExec -> Execute

  3. Geben Sie den folgenden Code ein:

    // 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. Klicken Sie unten auf die Schaltfläche Speichern und geben Sie dem Skript einen Namen

  5. Gehen Sie nun zu Plugins -> NppExec -> Erweiterte Optionen

  6. Wählen Sie rechts unter "Dieses Skript ausführen, wenn Notepad ++ startet" den Skriptnamen aus, den Sie gerade gespeichert haben

  7. Klicken Sie auf OK, schließen Sie Notepad ++ und öffnen Sie es erneut.)


Wo sind Nachrichtencodes wie 2596für andere Szintilla-Befehle dokumentiert? nur Scintilla.h stupsen? Derzeit unter tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/… ?
n611x007

Was ist 0drin SCI_SENDMSG 2596 3 0?
n611x007

@naxa: Die Nachrichtencodes finden Sie in der Scintilla-Dokumentation, z. B. scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS (Ich glaube, der dritte Parameter wird für die meisten von ihnen nicht verwendet, muss jedoch auf 0 gesetzt werden, anstatt weggelassen zu werden)
acatalept

"Eine Art Hack" - Ein Hack bedeutet, auf etwas zuzugreifen, was die Software nicht tun sollte. Das sieht für mich nach einem Feature aus.
Natalie Adams

@ Nathan: Semantik macht Spaß;) Ich meinte im Wesentlichen, dass die Verwendung des NppExec-Plugins zum Senden von Fensternachrichten direkt an die Steuerelemente eine Art Hack ist, nicht etwas, für das Notepad ++ speziell entwickelt wurde (abgesehen von der sorgfältigen Bereitstellung eines Plugin-Frameworks zum Schmieren des Räder)
Acatalept

0

Installieren Sie NppExec ohne Administratorrechte, indem Sie die DLL herunterladen und im Verzeichnis / Ordner des Plugins von npp installieren. Npp schließen / wieder öffnen

Bearbeiten (+2 Jahre): Ich weiß nicht, ob sich dies geändert hat, aber wir legen jetzt (wenn nicht ursprünglich) den NppExec- Ordner in den Plugins-Ordner von npp - mit der DLL im NppExec-Unterordner.

Stellen Sie außerdem sicher, dass die Versionen übereinstimmen (erinnern Sie sich daran, ob Sie 32-Bit oder 64-Bit verwenden). Wenn Sie eine aktuelle Version (2019) haben, benötigen Sie möglicherweise die _PA-Version von NppExec.

Warum kann ich das NppExec-Plugin für Notepad ++ nicht installieren?


In Notepad ++ hat sich etwas geändert. Der Execute ist nicht mehr da. Gibt es Korrekturen dazu?
user215779
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.