Notepad ++: отключить автоматический отступ после пустых строк

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

(Примечание: я редактирую файлы HTML/PHP.)

(Кроме того, предложения других хороших бесплатных редакторов для HTML/PHP приветствуются, если нет способа изменить это поведение.)

Ответ 1

Это поведение можно отключить, выполнив:

Плагины > NppAutoIndent > Предыдущая строка

Если этот параметр отключен, вам может потребоваться сначала проверить этот параметр:

Плагины > NppAutoIndent > Игнорировать язык

Ответ 2

Я могу подтвердить, что эта проблема возникает с Notepad ++ версии 5.0.3. Единственный связанный параметр, который я нашел, находится в разделе "Настройки" > "Настройки" > "MISC" > "Автоотступник", но это просто включает или отключает все автоотчет.

Я использовал Editra (http://editra.org) в прошлом и был доволен этим, и он, похоже, обрабатывает отступы, как вы описываете.

Ответ 3

Я нашел другой способ:

Используйте макрос "Trim Trailing and save" short-cut "Alt + Shift + S"

Мне нужно это все время, просто замените сохранение короткой вырезкой макросом "Trim Trailing and save" short-cut.

Я только использую notepad ++, когда я программирую, так что это хорошо работает для меня.

Ответ 4

К сожалению, Notepad ++ не обрезает вторую пустую новую строку автоматически. Но, как обход, я согласен с user108570: макрос был бы идеальным.

Мне нравится делать концептуальное различие между "мягким" и "жестким" linefeeds, аналогично двум типам вкладок. Выход первого зависит от текущих настроек стиля и отступов. Выход последнего, однако, всегда должен быть простой, неподдельной, простой ванильной новой линией.

Наиболее часто используемый вкус перевода строк, конечно, должен быть сопоставлен с более простой комбинацией клавиш. Для большей части редактирования вы, вероятно, захотите оставить "мягкую линейную привязку" сопоставленной с ключом "Enter" и изменить "Ctrl + Enter" , чтобы вызвать "жесткую линию".

В "Меню → Настройки → Ярлык Mapper → Главное меню" вы увидите, что по умолчанию "Ctrl + Enter" отображается на "Word Completion". Сначала это нужно отключить, сопоставив его с "Нет".

Затем просто запишите макрос:

  • Меню → Макро → Начать запись
  • Клавиатура → Введите
  • Клавиатура → Вкладка
  • Клавиатура → Shift + Home
  • Клавиатура → Удалить
  • Меню → Макро → Остановка записи
  • Меню → Макро → Сохранить текущий записанный макрос

На последнем шаге появится диалог, в котором вы бы назвали макрос (например, "Hard Linefeed" ) и установили его сопоставление (т.е. "Ctrl + Enter" ).

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

Ответ 5

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

Я могу понять это как расстройство с чем-то вроде Python, но не с PHP... Хотя, перед фигурными скобками и т.д., это может раздражать.

Попробуйте Komodo Edit, однако он бесплатный, и я обнаружил, что он, как правило, был лучшим для авто-отступов для меня, Кажется, он узнал мой стиль кодирования (или имеет в нем опции для всех стилей кодирования, и он выбирает то, что вы используете) и автоматически отступает все правильно.

Изменить: как вы отметили в своем ответе, проблема связана с "конечным пробелом" - я не слишком хорошо знаю Notepad ++, но большинство современных редакторов, предназначенных для кодирования, имеют опцию "strip trailing whitespace on save" Я знаю, что Комодо делает!)

Ответ 6

Что я делаю в Notepad ++:

  • В TexFX > TexFX Edit есть макрос "trim trailing spaces".
  • Используйте это для создания макроса "обрезка и сохранение".
  • Привяжите этот макрос к CTRL + S и привяжите 'Сохранить' к чему-то еще.

Я расскажу вам, как записывать макрос, который использует другой макрос, но это было много лет назад, и я просто копировал файл. Я ожидаю, что это Just Works, или, возможно, я сделал это, вручную отредактировав файл ярлыков. Это выглядит так (в shortcuts.xml):

<Macro name="Trim and save" Ctrl="no" Alt="yes" Shift="yes" Key="83">
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="42024" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="41006" lParam="0" sParam="" />
</Macro>

Два предупреждения:

  • Маска обрезки глючит. Он работает только в том случае, если курсор находится в конце строки, когда он используется. Я иногда думаю о попытке исправить это или сделать свое, но его никогда не беспокоить, потому что я рефлексивно обойду его, перемещая курсор сам перед сохранением. То же обходное решение можно просто встроить в макрос "trim and save".

  • Некоторые люди расстраиваются, если вы удаляете конечные пробелы из "своих" файлов - либо потому, что им это нравится, либо потому, что они иногда используют diff, не игнорируя пробелов (например, в отчетах об изменениях), и не хотят что вы изменили половину файла, когда на самом деле это был однострочный. Поэтому для этих файлов просто оставляйте конечные пробелы как есть и сохраняйте с помощью alt-f-s (или "что-то еще", которое вы переместили, а не в ctrl-s). Вероятно, вам нужно установить Notepad ++, чтобы не очистить буфер отмены при сохранении: иначе ошибка здесь была бы катастрофой. Но я все равно это установил.

Ответ 7

Trim Trailing Space и Save раздражает. Вы заметите, что вы вставляете несколько символов в документы непреднамеренно.

Вместо этого запишите макрос и привяжите его к вашему ctrl + s.

Вот как это сделать:

  • Макро → Начать запись
  • Изменить → Трейлинг пространства
  • Файл → Сохранить
  • Макро → Остановка записи
  • Макро → Сохранить текущий записанный макрос (Trim and Save)
  • Настройки- > ярлык.
  • Главное меню → Сохранить → Ctrl + Alt + Shift + Сохранить
  • Макросы- > Обрезка и сохранение → Ctrl + S