Блокнот ++: курсор минулого кінця рядка / віртуального простору?


11

TL; DR - Як я можу дозволити віртуальним просторам переміщати курсор повз кінця рядка тексту?

Довга версія - у «Блокноті ++», коли намагається вибрати (за допомогою миші) довгий рядок тексту, який проходить повз правий край вікна, змушує його прокручуватися горизонтально, моя миша іноді піде трохи вгору або вниз, щоб перемістити курсор до сусідньої (зазвичай набагато коротшої) лінії, внаслідок чого курсор відхиляється назад ліворуч, де закінчується ця сусідня лінія; що, у свою чергу, прокручує вікно горизонтально назад ліворуч, що ускладнює швидке перестроювання та закінчення перетягування мого вибору.

Деякі текстові редактори (хоча і на жаль мало) мають можливість "віртуальних просторів" або пробігаючи EOL, щоб полегшити мишу / стрілку навколо, не обмежуючись наявним текстовим / пробільним простором.

Як я можу зробити так, щоб це сталося в Notepad ++ (без злому самого джерела)?


1
початок рядка, утримуйте SHIFT + END, чи вибрано весь рядок? Я знаю, що це не те саме, що ти хотів, але це те, що я роблю.
Роб

1
Не те, про що ви просите, але проблема піде з обгортанням рядків.
Ероен

@Rob: Це, як правило, проблема, коли я намагаюся вибрати конкретний довгий фрагмент дуже довгого рядка коду, але цей рядок переплітається з іншими значно коротшими рядками. Я також міг би використовувати SHIFT + CTRL + RIGHTARROW, щоб швидко вибрати праворуч від моєї початкової точки одне слово за один раз, Блокнот ++ досить добре виявляє символи перелому слова, такі як періоди, круглі дужки тощо, коли немає жодного фактичного пробілу. слова (наприклад, у довгому посиланні на об'єкт), наприклад (javascript):someObjectName.subObject.property['index'](parameter)
acatalept

@Eroen: радий, що ти запропонував це, я вже давно не використовую обгортання слів у N ++, як це було для того, щоб програму ставити на коліна з великими файлами ... але насправді це працює дуже добре навіть для моїх великих 20k файли ліній і навіть вибудовують відступи на загорнуті рядки;)
acatalept

Відповіді:


14

Сортування хака (надсилає віконне повідомлення безпосередньо до керування редагуванням Scintilla при запуску), але чудово працює:

  1. Встановити плагін NppExec

  2. Перейдіть до Плагінів -> NppExec -> Виконати

  3. Введіть наступний код:

    // 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. Натисніть кнопку " Зберегти " внизу та вкажіть назву сценарію

  5. Тепер перейдіть до Плагінів -> NppExec -> Додаткові параметри

  6. Праворуч у розділі "Виконати цей скрипт при запуску" Блокнота ++ "виберіть ім'я сценарію, яке ви тільки що зберегли

  7. Натисніть кнопку ОК, закрийте / повторно відкрийте Блокнот ++ та насолоджуйтесь;)


де такі коди повідомлень, як 2596задокументовані для інших команд scintilla? ткнути тільки Scintilla.h? наразі на сайті tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/… ?
n611x007

Що 0в SCI_SENDMSG 2596 3 0?
n611x007

@naxa: див. документацію Scintilla щодо кодів повідомлень, наприклад, scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS (я вважаю, що 3-й параметр для більшості з них не використовується, але його потрібно встановити на 0, а не опустити)
acatalept

"Сортувати хак" - хак означає доступ до чогось, що програмне забезпечення не повинно було робити. Це для мене схоже на особливість.
Наталі Адамс

@Nathan: семантика - це весело;) Я по суті мав на увазі, що використання плагіна NppExec для надсилання віконних повідомлень безпосередньо до елементів керування - це щось на кшталт хак, а не те, що спеціально створено для Notepad ++ (окрім продуманого забезпечення плагіну для змащення колеса)
acatalept

0

Без прав адміністратора, встановіть NppExec, завантаживши dll та встановивши у каталог / папку npp-плагінів o / s. Закрити / повторно відкрити npp.

Редагувати (+2 роки): Я не знаю, чи це змінилося, але ми тепер (якщо не спочатку) помістили папку NppExec у папку плагінів npp - з dll у підпапці NppExec.

Також переконайтеся, що версії збігаються (нагадайте, чи перебуваєте ви на 32-бітній або 64-й), а якщо у вас є остання версія (2019), можливо, вам знадобиться _PA версія NppExec.

Чому я не можу встановити плагін NppExec для Notepad ++?


Щось змінилося в Notepad ++. Виконати вже немає. Чи є виправлення до цього?
user215779
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.