Notepad ++: cursor pasado final de línea / espacios virtuales?

11

TL; DR - ¿Cómo puedo habilitar espacios virtuales para mover el cursor más allá del final de una línea de texto?

Versión larga : en Notepad ++, cuando trato de seleccionar (usando el mouse) una larga línea de texto que se extiende más allá del borde derecho de la ventana, haciendo que se desplace horizontalmente, mi mouse a veces sube o baja un poco lo suficiente como para mover el cursor a la línea adyacente (generalmente mucho más corta), lo que hace que el cursor vuelva a la izquierda donde termina esa línea adyacente; que a su vez desplaza la ventana horizontalmente hacia la izquierda, lo que dificulta reajustar rápidamente y terminar de arrastrar mi selección.

Algunos (aunque lamentablemente pocos) editores de texto tienen una opción para "espacios virtuales", o pasar el cursor por la EOL, para que sea mucho más fácil mover el mouse / flecha sin estar restringido al texto / espacio en blanco existente.

¿Cómo puedo hacer que esto suceda en Notepad ++ (sin hackear la fuente yo mismo)?

acatalept
fuente
1
inicio de línea, mantenga presionada la tecla MAYÚS + FIN, ¿ha seleccionado toda la línea? Sé que no es lo mismo que querías, pero es lo que hago.
Rob
1
No es lo que pides, pero el problema desaparecería con el ajuste de línea.
Eroen
@Rob: Esto suele ser un problema cuando intento seleccionar un fragmento largo específico de una línea de código muy larga, pero esa línea se entremezcla con otras líneas mucho más cortas. También podría usar MAYÚS + CTRL + FLECHA DERECHA para seleccionar rápidamente hacia la derecha desde mi punto de partida una palabra a la vez, Notepad ++ es bastante bueno para detectar caracteres de salto de palabras como puntos, paréntesis, etc., cuando no hay espacios reales que separen palabras (como en una referencia de objeto larga) p. ej. (javascript):someObjectName.subObject.property['index'](parameter)
acatalept
@Eroen: me alegra que hayas sugerido esto, no he usado el ajuste de texto en N ++ durante mucho tiempo, ya que solía poner el programa de rodillas con archivos grandes ... pero en realidad funciona muy bien incluso para mis 20k más grandes archivos de línea, e incluso líneas de sangría en líneas envueltas;)
acatalept

Respuestas:

14

Una especie de pirateo (envía un mensaje de ventana directamente al control de edición de Scintilla al inicio), pero funciona muy bien:

  1. Instalar el complemento NppExec

  2. Vaya a Complementos -> NppExec -> Ejecutar

  3. Ingrese el siguiente código:

    // 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. Haga clic en el botón Guardar en la parte inferior y asigne un nombre al script.

  5. Ahora vaya a Complementos -> NppExec -> Opciones avanzadas

  6. A la derecha, en "Ejecutar este script cuando se inicia Notepad ++", seleccione el nombre del script que acaba de guardar

  7. Haga clic en Aceptar, cierre / vuelva a abrir Notepad ++ y disfrute;)

acatalept
fuente
¿Dónde están 2596documentados los códigos de mensaje para otros comandos de scintilla? hurgando Scintilla.h solo? actualmente en tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/… ?
n611x007
Lo que es 0en SCI_SENDMSG 2596 3 0?
n611x007
@naxa: consulte la documentación de Scintilla para los códigos de mensaje, por ejemplo, scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS (creo que el 3er parámetro no se utiliza para la mayoría de estos, pero debe establecerse en 0 en lugar de omitirse)
acatalept
"Una especie de hack": un hack significa acceder a algo que el software no debía hacer. Esto me parece una característica.
Natalie Adams
@Nathan: la semántica es divertida;) Quise decir esencialmente que usar el complemento NppExec para enviar mensajes de ventana directamente a los controles es una especie de truco, no es algo para lo que Notepad ++ fue diseñado específicamente (aparte de proporcionar un marco de plugin para engrasar ruedas)
acatalept
0

Sin derechos de administrador, instale NppExec descargando el dll e instalándolo en los complementos de npp o / s directorio / carpeta. Cerrar / volver a abrir npp.

Editar (+2 años): no sé si esto ha cambiado, pero ahora (si no originalmente) colocamos la carpeta NppExec en la carpeta de complementos de npp , con el dll en la subcarpeta NppExec.

También asegúrese de que las versiones coincidan (recuérdese si tiene 32 bits o 64), y si tiene una versión reciente (2019), es posible que necesite la versión _PA de NppExec.

¿Por qué no puedo instalar el complemento NppExec para Notepad ++?

Cloink
fuente
Algo ha cambiado en Notepad ++. El Ejecutar ya no está allí. ¿Hay correcciones a esto?
user215779