67

Eclipse имеет сочетание клавиш, которое удаляет либо текущую строку (если ничего не выделено), либо все строки, которые являются частью текущего выделенного текста: Ctrl+D.

Есть ли способ заставить Ctrl+D делать то же самое в Notepad++?

Лучшее, что я мог сделать, это переназначить ярлык на Scintilla SCI_LINE_DELETE , но он удаляет только одну строку за раз, даже если выделение занимает несколько строк.

7 ответов7

85

Ctrl + Shift + L достигнет того же эффекта.

Ctrl + L удалит строку, но также сохранит ее в буфере обмена, заменив содержимое буфера обмена.

Я не уверен, можете ли вы сопоставить Ctrl+D, чтобы сделать то же самое или нет. Я не особо испортил раскладки клавиатуры в Notepad++, так как они очень похожи на Visual Studio.

19

Мне пришлось сопоставить Ctrl+D и с SCI_LINEDELETE и с SCI_LINECUT , чтобы заставить его вести себя как Eclipse. Надеюсь, это полезно.

Вам также нужно отключить или перепривязать SCI_SELECTIONDUPLICATE чтобы не возникало конфликта при Ctrl+D.
Чтобы отключить ярлык, выделите его, нажмите « Modify установите для DropDownList значение « None , сначала нажмите « Apply а затем « Okay .

13

Макро - хороший выбор здесь. Хотя макрос, который я придумал, немного запаздывает (вы можете заметить, что между ударом CTRL-D и удалением строк при большом выделении может быть задержка в четверть секунды), он прекрасно работает как при выделении одной строки, так и при выделении нескольких строк, и охватывает различные сложные случаи.

Итак, мой макрос:

CTRL + J - если выделено несколько строк, они объединяются в одну строку
HOME - обычная кнопка HOME. Подводит курсор к началу строки (или началу объединенной строки)
SHIFT + END - выбирает строку до конца, начиная с позиции курсора
CTRL + SHIFT + L - удаляет всю строку

Этот набор действий охватывает все возможные сценарии удаления строк, с которыми я сталкивался до сих пор при интенсивном использовании notepad++.

8

В Notepad++ есть ярлык для удаления строки: Ctrl+ Shift+ L но это удалит только одну строку.

Даже если выбрано несколько строк, будет удалена только строка, в которой находится курсор, а не выделенные строки.

Итак, самый простой способ удалить серию выбранных строк, вы должны записать макрос с помощью следующих сочетаний клавиш:

Ctrl+J

с последующим

Ctrl+Shift+L

Это первое JOIN выбранные строки , а затем DELETE всю строку.

Это лучше, чем использование комбинации подходов CUT и DELETE как упомянуто выше (которую я пробовал), потому что в некоторых случаях он также удаляет невыбранные строки.

4

В качестве не-макро-альтернативы ответу @Jan Domozilov, я следовал этим шагам (используя Notepad++ v6.5.1 (UNICODE)):

  1. В меню « Настройки» выберите « Shortcut Mapper .
  2. На вкладке Главного меню установите Join Lines (строка 26) на Ctrl+Alt+D
  3. Нажмите вкладку Команды Scintilla .
  4. Установите SCI_LINEDELETE (строка 90) на Ctrl+D
  5. Закройте окно.

Это позволяет вам выполнить желаемое поведение с небольшой модификацией. Вы выбираете свой текст, запускаете команду Join Lines с помощью Ctrl+Alt+D , отпускаете только Alt и снова нажимаете D чтобы удалить текст.

0

CTRL+SHIFT+DELDETE прекрасно работает для меня, чтобы удалить всю строку.

0

Вы можете использовать сочетание клавиш CTRL+DELETE, чтобы удалить все содержимое строки. Затем все, что вам нужно сделать, это снова использовать DELETE, чтобы удалить перевод строки. Если вам этого недостаточно, вы можете создать макрос для выполнения обоих действий.

Похоже, что он перестал работать в последней версии, я рекомендую вам использовать подход Macro для всей проблемы. Перейдите в "Макрос", "Начать запись", затем нажмите "Домой", "Shift"+"КОНЕЦ", "УДАЛИТЬ", "УДАЛИТЬ", затем перейдите в "Макрос" и остановите свой макрос. После этого перейдите в "Сохранить текущий записанный макрос" и выберите имя и ярлык (например, CTRL+DEL). Это снова активирует ярлык для удаления строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .