Как имитировать функции Visual Studio CTRL-X, CTRL-V в Notepad ++?
Я использую Notepad ++ для некоторых проектов и пропускаю функциональность Visual Studio Ctrl + X, Ctrl + C, которая сокращает или копирует всю текущую строку при отсутствии текста. Сокращение строки сокращается, как представляется, Ctrl + L, что не так удобно, как Ctrl + X, а сокращенная копия выглядит как Ctrl + D, Ctrl + L, что еще менее удобно.
Хотя ранее был задан вопрос аналогичный вопрос, способ сделать это в Notepad ++ не был предоставлен, и я не могу найти решение на сайте Notepad ++ или на его форумах.
Ответы
Ответ 1
Синтезируя все другие ответы и комментарии, а также некоторые дополнительные необходимые шаги, которые не были упомянуты:
Scintilla предоставляет команду "copyAllowLine", которая делает это. Notepad ++ не раскрывает эту команду в ярлыке mapper, но вы можете вызвать его из Python script и сопоставить Ctrl + C с этим script. Для "cutAllowLine" нет соответствующей команды, но для этого потребуется немного дополнительного кода Python. Эти скрипты должны быть добавлены в меню, а Notepad ++ должен перезагрузиться, прежде чем они станут доступными в ярлыке.
-
Установите плагин Python Script (может быть выполнен с помощью диспетчера плагинов Notepad ++)
-
Создайте следующие два сценария python, используя меню Plugins → Python script → New Script
copyAllowLine.py
editor.copyAllowLine()
cutAllowLine.py
if editor.getSelectionStart() == editor.getSelectionEnd():
editor.lineCut()
else:
editor.cut()
-
Python script → Конфигурация
- под Сценарии пользователя, добавьте пункт меню для каждого script.
-
Перезапустить блокнот ++ (важно)
-
Настройки → Ярлык Mapper...
-
в командах Scintilla, удалите существующие ассоциации для Ctrl + C и Ctrl + X.
-
в командах плагинов, найдите созданные вами скрипты и нарисуйте их ярлыки.
Примечание: при установке с помощью диспетчера плагинов была установлена версия 1.0.6. Когда я попытался запустить любой python, связанный с Notepad ++, я получил неизвестное исключение из диспетчера плагинов. Решение заключалось в том, чтобы вручную загрузить и установить 1.0.8.msi отсюда: 1.0.8 установщик
Ответ 2
Я создал плагин Notepad ++, который делает это (без необходимости python). Его можно найти в https://bitbucket.org/zastrowm/notepad-visualstudiolinecopy.
Ответ 3
- Установите Плагин NppPython (может быть выполнен с помощью диспетчера модулей Notepad ++)
-
Создайте этот python script с помощью меню Plugins → Python script → New script:
if editor.getSelectionStart() == editor.getSelectionEnd():
editor.lineCut()
else:
editor.cut()
-
Перезапустить блокнот ++ (важно)
-
Перейдите в Настройки меню → Ярлык Mapper → Команды плагинов
-
Найдите script, который вы только что создали в списке, и установите для него сочетание клавиш CTRL + X
-
Наслаждайтесь!
Ответ 4
Перейдите в Настройки- > Ярлык и перейдите на вкладку "Команды Scintilla" вверху. Под ним вы можете изменить команду Ctrl + L на Ctrl + X.
Ответ 5
Вы можете добавить script с плагином Python script Notepad ++ и назначить Ctrl + C script (удалить отображение Ctrl + C из SCI_COPY в ярлыке mapper, Scintilla Commands)
script:
if editor.getSelectionStart() == editor.getSelectionEnd():
line = editor.getCurLine()
editor.copyText(line)
else:
editor.copy()
Очевидно, просто добавьте еще один подобный script для Ctrl-X, который вместо этого удаляет строку.
Ответ 6
Плагин из MackieChan: блокнот с визуальной копией студии
должен быть настроен следующим образом:
-
Поместите его в папку notepad ++/plugin
-
открыть блокнот ++ (перезагрузка)
-
в настройках → ярлык Mapper
в командах Scintilla, удалите существующие ассоциации для Ctrl + C, X
в командах плагинов, найдите созданные вами скрипты и сопоставьте свои ярлыки с ними.
Ответ 7
Существует плагин для него https://github.com/kbilsted/NppPluginCutNCopyLine с открытым исходным кодом, и код можно легко изменить, если у вас есть дополнительные потребности.
Ответ 8
вы можете написать программу с глобальным ключевым событием, который каждый раз, когда вы делаете Ctrl + X, проверяет, является ли блокнот ++ самым передовым запущенным приложением, захватывает экран, проверяет, выбран ли какой-либо текст (путем поиска на снимке экрана и настройках цвета вашего блокнота +) и отправляет сообщение WM_KEYPRESS в окно блокнота ++, имитирующее Ctrl + L (при условии, что вы используете окна).
(это не помещает строку в буфер обмена, но вам придется сделать некоторое распознавание символов, чтобы это разрешить)