Как имитировать функциональность Visual Studio CTRL-X, CTRL-V в Notepad ++? - PullRequest
24 голосов
/ 06 марта 2009

Я использую Notepad ++ для некоторых проектов и скучаю по Ctrl + X , Ctrl + C функциональности, которая сокращает или копирует всю текущую строку, когда текст не выделен. Ярлык линии обрезки выглядит как Ctrl + L , что не так удобно, как Ctrl + X , а ярлык копирования кажется быть Ctrl + D , Ctrl + L , что еще менее удобно.

Несмотря на то, что подобный вопрос был задан ранее, способ сделать это в Notepad ++ не был предоставлен, и я не могу найти решение на сайте Notepad ++ или на его форумах.

Ответы [ 8 ]

22 голосов
/ 30 декабря 2012

Я создал плагин Notepad ++, который делает это (без использования Python). Его можно найти на https://bitbucket.org/zastrowm/notepad-visualstudiolinecopy.

21 голосов
/ 30 ноября 2011

Обобщение всех остальных ответов и комментариев, а также некоторые дополнительные необходимые шаги, которые не были упомянуты:

Scintilla предоставляет команду «copyAllowLine», которая делает это. Notepad ++ не предоставляет эту команду в сопоставлении ярлыков, но ее можно вызвать из скрипта Python и сопоставить Ctrl + C с этим скриптом. Для "cutAllowLine" нет соответствующей команды, но немного дополнительного кода Python сделает это. Эти сценарии должны быть добавлены в меню, и Notepad ++ должен быть перезапущен, прежде чем они станут доступны в средстве быстрого доступа.

  1. Установка Плагин Python Script (можно сделать с помощью менеджера плагинов Notepad ++)

  2. Создайте следующие два скрипта Python, используя меню Плагины -> Скрипт Python -> Новый скрипт

    copyAllowLine.py

    editor.copyAllowLine()
    


    cutAllowLine.py

    if editor.getSelectionStart() == editor.getSelectionEnd():
        editor.lineCut()
    else:
        editor.cut()
    


  3. Python Script -> Конфигурация

    • в Пользовательские сценарии , добавьте пункт меню для каждого сценария.

  4. Перезапустить блокнот ++ (важно)

  5. Настройки -> Ярлык быстрого доступа ...

    • в Команды Scintilla , удалить существующие ассоциации для Ctrl + C и Ctrl + X .

    • в Команды плагина , найдите скрипты, которые вы только что создали, и сопоставьте с ними ваши ярлыки.

Примечание: при установке через менеджер плагинов была установлена ​​версия 1.0.6. Когда я пытался запустить что-нибудь, связанное с Python в Notepad ++, я получил неизвестное исключение из менеджера плагинов. Решением было вручную загрузить и установить 1.0.8 .msi отсюда: 1.0.8 Установщик

3 голосов
/ 03 октября 2011
  1. Установка Плагин NppPython (можно сделать с помощью Менеджера плагинов Notepad ++)
  2. Создайте этот скрипт Python, используя меню Плагины -> Скрипт Python -> Новый скрипт:

    if editor.getSelectionStart() == editor.getSelectionEnd():
        editor.lineCut()
    else:
        editor.cut()
    
  3. Перезапустить блокнот ++ (важно)

  4. Зайдите в Настройки меню -> Ярлык ярлыков -> Команды плагина

  5. Найдите скрипт, который вы только что создали в списке, и установите для него сочетание клавиш CTRL + X

  6. Наслаждайтесь!

2 голосов
/ 06 марта 2009

Перейдите в Настройки-> Ярлык ярлыков и нажмите на вкладку «Команды Scintilla» вверху. Там вы можете изменить команду Ctrl + L на Ctrl + X .

1 голос
/ 06 марта 2014

Плагин от MackieChan: блокнот-визуальная студийная линия, копия

должен быть настроен следующим образом:

  1. Поместите его в папку notepad ++ / plugin

  2. открыть блокнот ++ (перезапустить)

  3. в настройках -> Ярлык быстрого доступа

    в Команды Scintilla , удалить существующие ассоциации для Ctrl + C, X

    в Команды плагинов , найдите скрипты, которые вы только что создали, и сопоставьте им свои ярлыки.

1 голос
/ 05 сентября 2010

Вы можете добавить сценарий с помощью плагина Python Script Notepad ++ и назначить сценарию Ctrl + C (удалите Ctrl + C отображение из SCI_COPY в ярлыке быстрого доступа, вкладка Команды Scintilla)

Сценарий просто:

if editor.getSelectionStart() == editor.getSelectionEnd():
    line = editor.getCurLine()
    editor.copyText(line)
else:
    editor.copy()

Очевидно, просто добавьте еще один аналогичный скрипт для Ctrl-X, который удаляет строку вместо этого.

0 голосов
/ 21 июня 2016

Есть плагин для него на https://github.com/kbilsted/NppPluginCutNCopyLine с открытым исходным кодом, и код легко изменить, если у вас есть дополнительные потребности.

0 голосов
/ 04 сентября 2010

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

(хотя это не поместит строку в буфер обмена, однако вам потребуется некоторое распознавание символов, чтобы это сделать)

...