Bloc-notes ++: curseur après la fin de la ligne / espaces virtuels?

11

TL; DR - Comment puis-je activer des espaces virtuels pour déplacer le curseur au-delà de la fin d'une ligne de texte?

Version longue - Dans Notepad ++, lorsque vous essayez de sélectionner (à l'aide de la souris) une longue ligne de texte qui s'étend au-delà du bord droit de la fenêtre, ce qui la fait défiler horizontalement, ma souris ira parfois assez haut ou bas assez pour déplacer le curseur à la ligne adjacente (généralement beaucoup plus courte), ce qui fait que le curseur revient à gauche à la fin de cette ligne adjacente; qui à son tour fait défiler la fenêtre horizontalement vers la gauche, ce qui rend difficile un réajustement rapide et une fin en faisant glisser ma sélection.

Certains éditeurs de texte (bien que malheureusement peu nombreux) ont une option pour les "espaces virtuels" ou les curseurs au-delà de la fin de vie, pour faciliter le déplacement de la souris / flèche sans être limité au texte / espace existant.

Comment puis-je y arriver dans Notepad ++ (sans pirater moi-même la source)?

acatalept
la source
1
début de ligne, maintenez SHIFT + END, avez-vous sélectionné la ligne entière? Je sais que ce n'est pas la même chose que ce que tu voulais, mais c'est ce que je fais.
Rob
1
Pas ce que vous demandez, mais le problème disparaîtrait avec le retour à la ligne.
Eroen
@Rob: C'est généralement un problème lorsque j'essaie de sélectionner un long morceau spécifique d'une très longue ligne de code, mais cette ligne est mélangée avec d'autres lignes beaucoup plus courtes. Je pourrais également utiliser SHIFT + CTRL + RIGHTARROW pour sélectionner rapidement vers la droite à partir de mon point de départ un mot à la fois, le Bloc-notes ++ est assez bon pour détecter les caractères de rupture de mot tels que les points, les parenthèses, etc. lorsqu'il n'y a pas d'espaces réels séparant mots (comme dans une longue référence d'objet) par exemple (javascript):someObjectName.subObject.property['index'](parameter)
acatalept
@Eroen: heureux que vous ayez suggéré cela, je n'ai pas utilisé de retour à la ligne en N ++ depuis longtemps, car il mettait le programme à genoux avec de gros fichiers ... mais cela fonctionne très bien même pour mon plus gros 20k fichiers de ligne, et même aligne les retraits sur les lignes enveloppées;)
acatalept

Réponses:

14

Une sorte de hack (envoie un message de fenêtre directement au contrôle d'édition Scintilla au démarrage), mais fonctionne très bien:

  1. Installer le plugin NppExec

  2. Allez dans Plugins -> NppExec -> Execute

  3. Entrez le code suivant:

    // 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. Cliquez sur le bouton Enregistrer en bas et donnez un nom au script

  5. Allez maintenant dans Plugins -> NppExec -> Options avancées

  6. À droite, sous "Exécuter ce script au démarrage de Notepad ++", sélectionnez le nom du script que vous venez d'enregistrer

  7. Cliquez sur OK, fermez / rouvrez Notepad ++ et profitez;)

acatalept
la source
où sont les codes de message comme 2596documentés pour d'autres commandes scintilla? piquer Scintilla.h seulement? actuellement sur tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/… ?
n611x007
Qu'est - ce que 0dans SCI_SENDMSG 2596 3 0?
n611x007
@naxa: voir la documentation Scintilla pour les codes de message, par exemple scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS (je crois que le 3e paramètre n'est pas utilisé pour la plupart d'entre eux, mais doit être réglé sur 0 plutôt qu'omis)
acatalept
"Sorte de hack" - un hack signifie accéder à quelque chose que le logiciel n'était pas censé faire. Cela ressemble à une fonctionnalité pour moi.
Natalie Adams
@Nathan: la sémantique est amusante;) Je voulais dire essentiellement que l'utilisation du plugin NppExec pour envoyer des messages de fenêtre directement aux contrôles est en quelque sorte un hack, pas quelque chose que Notepad ++ a été spécifiquement conçu pour faire (à part de fournir un framework de plugin pour graisser le roues)
acatalept
0

Sans droits d'administrateur, installez NppExec en téléchargeant la dll et en l'installant dans le répertoire / dossier des plugins de npp. Fermer / rouvrir npp.

Edit (+2 ans): Je ne sais pas si cela a changé mais nous avons maintenant (sinon à l'origine) mis le dossier NppExec dans le dossier plugins de npp - avec la dll dans le sous-dossier NppExec.

Assurez-vous également que les versions correspondent (rappelez-vous si vous êtes sur 32 bits ou 64) et si vous avez une version récente (2019), vous pourriez avoir besoin de la version _PA de NppExec.

Pourquoi ne puis-je pas installer le plug-in NppExec pour Notepad ++?

Cloink
la source
Quelque chose a changé dans Notepad ++. L'Exécution n'est plus là. Y a-t-il des corrections à cela?
user215779