Notepad ++: cursore oltre la fine della riga / spazi virtuali?


11

TL; DR - Come posso abilitare gli spazi virtuali per spostare il cursore oltre la fine di una riga di testo?

Versione lunga - In Notepad ++, quando provo a selezionare (usando il mouse) una lunga riga di testo che si estende oltre il bordo destro della finestra, facendolo scorrere orizzontalmente, il mio mouse a volte va leggermente su o giù abbastanza da spostare il cursore alla linea adiacente (di solito molto più corta), facendo scattare il cursore indietro a sinistra dove termina quella linea adiacente; che a sua volta fa scorrere la finestra in senso orizzontale indietro a sinistra, rendendo difficile riadattare rapidamente e finire di trascinare la mia selezione.

Alcuni (anche se terribilmente pochi) editor di testo hanno un'opzione per "spazi virtuali", o corsivo oltre l'EOL, per rendere molto più semplice il mouse / la freccia senza essere limitati al testo / spazi bianchi esistenti.

Come posso farlo accadere in Notepad ++ (senza hackerare la fonte da solo)?


1
inizio riga, tieni premuto MAIUSC + FINE, hai selezionato l'intera riga? So che non è lo stesso di quello che volevi, ma è quello che faccio.
Rob

1
Non quello che chiedi, ma il problema andrebbe via con il wrapping della linea.
Eroen

@Rob: questo è generalmente un problema quando sto cercando di selezionare una parte lunga specifica di una riga di codice molto lunga, ma quella riga è mescolata con altre righe molto più brevi. Potrei anche usare MAIUSC + CTRL + FRECCIA DESTRA per selezionare rapidamente a destra dal mio punto di partenza una parola alla volta, Notepad ++ è abbastanza bravo a rilevare caratteri di interruzione di parole come punti, parentesi, ecc. Quando non ci sono spazi effettivi che separano parole (come in un riferimento a un oggetto lungo) es. (javascript):someObjectName.subObject.property['index'](parameter)
acatalept

@Eroen: sono contento che tu l'abbia suggerito, non ho usato il ritorno a capo automatico in N ++ per molto tempo, dato che era solito mettere in ginocchio il programma con file di grandi dimensioni ... ma in realtà funziona molto bene anche per i miei 20k più grandi linea file, e anche le linee fino trattini sulle linee avvolte;)
acatalept

Risposte:


14

Ordinamento di un hack (invia un messaggio finestra direttamente al controllo di modifica Scintilla all'avvio), ma funziona benissimo:

  1. Installa il plugin NppExec

  2. Vai su Plugin -> NppExec -> Esegui

  3. Inserisci il seguente codice:

    // 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. Fai clic sul pulsante Salva in basso e assegna un nome allo script

  5. Ora vai su Plugin -> NppExec -> Opzioni avanzate

  6. A destra, sotto "Esegui questo script all'avvio di Notepad ++", seleziona il nome dello script che hai appena salvato

  7. Fai clic su OK, chiudi / riapri Notepad ++ e divertiti;)


dove sono i codici dei messaggi come 2596documentati per altri comandi scintilla? colpendo solo Scintilla.h? attualmente su tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/… ?
611x007,

Cosa c'è 0dentro SCI_SENDMSG 2596 3 0?
n611x007,

@naxa: consultare la documentazione di Scintilla per i codici dei messaggi, ad esempio scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS (credo che il terzo parametro non sia utilizzato per la maggior parte di questi, ma deve essere impostato su 0 anziché omesso)
acatalept

"Sort of a hack" - un hack significa accedere a qualcosa che il software non avrebbe dovuto fare. Questa mi sembra una caratteristica.
Natalie Adams,

@Nathan: la semantica è divertente;) Intendevo essenzialmente che l'uso del plug-in NppExec per inviare i messaggi delle finestre direttamente ai controlli è una sorta di hack, non qualcosa che Notepad ++ è stato specificamente progettato per fare (oltre a fornire pensosamente un framework di plugin per ingrassare il ruote)
acatalept del

0

Senza diritti di amministratore, installa NppExec scaricando la dll e installandola nella directory / cartella dei plug-in di npp. Chiudi / riapri npp.

Modifica (+2 anni): non so se sia cambiato, ma ora (se non in origine) mettiamo la cartella NppExec nella cartella dei plugin di npp - con la dll nella sottocartella NppExec.

Assicurati anche che le versioni corrispondano (ricorda a te stesso se sei su 32 bit o 64) e se hai una versione recente (2019), potresti aver bisogno della versione _PA di NppExec.

Perché non riesco a installare il plug-in NppExec per Notepad ++?


Qualcosa è cambiato in Notepad ++. Execute non è più lì. Ci sono correzioni a questo?
user215779
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.