Блокнот ++: курсор за концом строки / виртуальные пробелы?

10

TL; DR - Как я могу разрешить виртуальным пробелам перемещать курсор за конец строки текста?

Длинная версия - В Notepad ++ при попытке выделить (с помощью мыши) длинную строку текста, которая проходит за правый край окна, вызывая ее горизонтальную прокрутку, моя мышь иногда немного поднимается или опускается, чтобы переместить курсор к смежная (обычно намного более короткая) линия, в результате чего курсор возвращается влево, где заканчивается эта смежная линия; который, в свою очередь, прокручивает окно по горизонтали обратно влево, затрудняя быструю перенастройку и растягивание моего выбора.

Некоторые (хотя и очень прискорбно) текстовые редакторы имеют опцию «виртуальных пробелов», или курсора за EOL, чтобы упростить перемещение мышью / стрелкой без ограничения существующим текстом / пробелами.

Как я могу сделать это в Notepad ++ (без взлома исходного кода самостоятельно)?

acatalept
источник
1
начало строки, удерживая SHIFT + END, выделена ли вся строка? Я знаю, что это не то, что вы хотели, но это то, что я делаю.
Rob
1
Не то, что вы спрашиваете, но проблема исчезнет с переносом строк.
Eroen
@Rob: Обычно это проблема, когда я пытаюсь выбрать конкретный длинный фрагмент очень длинной строки кода, но эта строка смешивается с другими, более короткими строками. Я также мог бы использовать клавиши SHIFT + CTRL + RIGHTARROW для быстрого выбора вправо от моей начальной точки по одному слову за раз, Notepad ++ довольно хорошо обнаруживает символы переноса слов, такие как точки, круглые скобки и т. Д., Когда нет пробелов, разделяющих пробелы слова (например, в длинной ссылке на объект), например (JavaScript): someObjectName.subObject.property['index'](parameter)
acatalept
@Eroen: рад, что вы предложили это, я давно не использовал перенос слов в N ++, так как раньше он ставил программу на колени с большими файлами ... но на самом деле она работает очень хорошо даже для моих больших 20К строковые файлы, и даже выравнивают отступы на обернутых строках;)
acatalept

Ответы:

12

Что-то вроде хака (отправляет окно сообщения непосредственно в элемент управления редактирования Scintilla при запуске), но прекрасно работает:

  1. Установите плагин NppExec

  2. Идти к Плагины - & gt; NppExec - & gt; казнить

  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. Теперь иди в Плагины - & gt; NppExec - & gt; Расширенные настройки

  6. Справа в разделе «Выполнить этот скрипт при запуске Notepad ++» выберите только что сохраненное имя скрипта.

  7. Нажмите OK, закройте / снова откройте Блокнот ++ и наслаждайтесь;)

acatalept
источник
где такие коды сообщений 2596 документировано для других команд сцинтиллы? тыкаешь только 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 (Я полагаю, что третий параметр не используется для большинства из них, но должен быть установлен в 0, а не пропущен)
acatalept
«Вроде взлома» - взлом означает доступ к тому, что программное обеспечение не должно было делать. Это выглядит как особенность для меня.
Natalie Adams
@Nathan: семантика - это весело;) По сути, я имел в виду, что использование плагина NppExec для отправки оконных сообщений непосредственно элементам управления является своего рода хаком, а не тем, для чего Notepad ++ был специально разработан (за исключением вдумчивого предоставления инфраструктуры плагинов для смазки колеса)
acatalept