Как сделать так, чтобы Notepad ++ удалял строки, как это делает Eclipse?


74

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

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

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

Ответы:


93

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

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

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


14
Brilliant! Теперь мне просто нужно найти то, что Ctrl+Lсопоставлено ... редактировать ага, оно сопоставлено SCI_LINECUT. Это была буквально следующая команда Scintilla ниже SCI_LINE_DELETE.
Мэтт Болл

26
Обратите внимание, что Ctrl+Lбудет разрезать линию (скопируйте ее в буфер обмена). Чтобы фактически удалить строку Ctrl+Shift+L, это удалит выделенные строки без перезаписи вашего буфера обмена.
Росди

1
@ RØŠÐÎ SCI_LINEDELETEэто то, что Ctrl+Shift+Lбыло сопоставлено. Я пытался это, но он только удалил (без копирования в буфер обмена) первую из выбранных строк, аналогично OP. Я что-то пропустил?
Джинглстхула

4
Почему этого нет в менюEdit > Line Operations
Алиопи

20

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

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


1
Почему оба были необходимы?
Джонатан Бенн

1
Когда я сопоставляю один и тот же ярлык обоим, все, что происходит, - это переключение с удаления только первой строки выбранных строк на удаление только той строки, на которой был курсор. (Я использовал Ctrl + Shift + D, поэтому мне не нужно было беспокоиться о привязке дубликата выделения.)
jinglesthula

14

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

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

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

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


Я знаю, что опоздал на несколько лет, но разве этот макрос не сработает так же просто, как DELETE вместо CTRL + SHIFT + L в качестве последней команды? Если я вас правильно понимаю, вы уже отметили весь текст, который хотите удалить, первыми тремя командами.
Бьярте Ауне Олсен

9

В 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

Еще один более простой способ - использовать backspaceкнопку после выбора, это заменит выбранную строку на клавишу возврата.


-1

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

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


Ctrl+Deleteне удаляет строки в Notepad ++ для меня (я не переназначил никакие ключи кроме Ctrl+D).
Мэтт Болл

Какую версию Notepad ++ вы используете? Он работает на Notepad ++ 5.8.2 под Win7
private_meta

5.8.7 (последняя версия) на Win7 x64. Вы имели в виду Ctrl+Backspace? (также не работает для меня)
Мэтт Болл

Ах, я только что протестировал его с 5.8.7, и он тоже не сработал, дайте мне посмотреть
private_meta

Я обновил свой ответ
private_meta

-1

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


2
ОП хочет удалить все строки, которые являются частью текущего выделенного текста . Ваш ярлык удаляет только первую строку выбора.
Никда
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.