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

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

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

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


person Laurent    schedule 23.09.2008    source источник


Ответы (7)


1) Сначала установите плагин NppAutoIndent, если у вас его нет.

Плагины> Диспетчер плагинов> Показать диспетчер плагинов, затем установите NppAutoIndent из вкладки «Доступные» этого меню.

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

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

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

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

person Community    schedule 06.12.2008
comment
Установка этого плагина на Smart Indent хорошо работала с PHP. - person b01; 28.01.2013
comment
Мне пришлось зайти в «Плагины»> «Диспетчер плагинов»> «Показать диспетчер плагинов», затем установить NppAutoIndent из вкладки «Доступные» в этом меню (онлайн-загрузка плагина не работает). После установки перейдите в Плагины ›NppAutoIndent, затем отметьте« Игнорировать язык »и« Предыдущая строка ». - person Qutorial; 24.11.2013
comment
У меня такой же отступ, но с табуляцией вместо пробелов. Это бесит питона. Как можно сделать такую ​​простую вещь так плохо. - person jozxyqk; 07.09.2014
comment
Ааа, спасибо. Я прибегал к тому, чтобы ставить «проход» после каждого блока в Python, пока не нашел это. - person Grault; 06.11.2014
comment
@Qutorial: Замечательный момент в том, что в некоторых случаях приходится игнорировать язык; Я взял на себя смелость добавить это к ответу. - person Amos M. Carpenter; 09.04.2015
comment
это предполагает, что у вас включен плагин NppAutoIndent ... Мой не был включен, НО я все еще получал автоматический отступ ... это означает, что в Npp существует какая-то другая функция, которая также управляет автоматическим отступом. - person dsdsdsdsd; 18.05.2016

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

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

person Michael Paladino    schedule 23.09.2008
comment
Сейчас пишу прозу и это именно то, что мне нужно, ура! - person JonnyRaa; 11.04.2014
comment
Это то, что я тоже искал. Спасибо. - person user2023370; 24.02.2016

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

Используйте макрос «Обрезать трейлинг и сохранить», ярлык «Alt + Shift + S»

Если вам это нужно постоянно, просто замените ярлык сохранения на ярлык макроса «Обрезать трейлинг и сохранить».

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

person b01    schedule 28.01.2013

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

Мне нравится проводить концептуальное различие между «мягким» и «жестким» переводом строки по аналогии с двумя типами вкладок. Результат первого зависит от текущего стиля и настроек отступа. Однако на выходе последнего всегда должна быть простая, чистая, чистая ванильная новая строка.

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

В «Меню -> Настройки -> Сопоставление клавиш -> Главное меню» вы увидите, что по умолчанию «Ctrl + Enter» отображается на «Завершение слова». Это необходимо сначала отключить, установив для него значение «Нет».

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

  1. Меню -> Макрос -> Начать запись
  2. Клавиатура -> Enter
  3. Клавиатура -> Вкладка
  4. Клавиатура -> Shift + Home
  5. Клавиатура -> Удалить
  6. Меню -> Макрос -> Остановить запись
  7. Меню -> Макрос -> Сохранить текущий записанный макрос

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

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

person Dejan Budimir    schedule 19.05.2010

Обрезать конечное пространство и сохранить надоедливо. Вы заметите, что случайно вставляете в документы несколько символов.

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

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

  1. Макрос -> Начать запись
  2. Правка -> Обрезать конечный пробел
  3. Файл -> Сохранить
  4. Макрос -> Остановить запись
  5. Макрос -> Сохранить текущий записанный макрос (Обрезать и сохранить)
  6. Настройки-> Сопоставитель ярлыков
  7. Главное меню -> Сохранить -> Ctrl + Alt + Shift + Сохранить
  8. Макросы-> Обрезать и сохранить -> Ctrl + S
person user108570    schedule 22.07.2009

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

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

Я бы сказал вам, как записать макрос, который использует другой макрос, но это было много лет назад, и теперь я просто копирую файл. Я ожидаю, что это просто работает, или, возможно, я сделал это, вручную отредактировав файл ярлыков. Это выглядит так (в 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>

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

  • Макрос обрезки глючит. Это работает, только если курсор находится в конце строки, когда он используется. Иногда я думаю о том, чтобы попытаться исправить это или сделать что-то свое, но никогда не беспокоюсь, потому что я рефлекторно обхожу это, перемещая курсор самостоятельно перед сохранением. Такой же обходной путь можно просто встроить в макрос «обрезать и сохранить».

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

person Steve Jessop    schedule 23.09.2008

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

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

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

Изменить: как вы отметили в своем ответе, проблема связана с «конечным пробелом» - я не слишком хорошо знаю Notepad ++, но в большинстве современных редакторов, предназначенных для кодирования, есть опция «убирать конечные пробелы при сохранении» (я знаю Komodo делает!)

person Mez    schedule 23.09.2008
comment
Есть ли бесплатная (хотя бы как в пивной) версия комодо? на их сайте я могу найти только пробную версию. - person Laurent; 23.09.2008
comment
Notepad ++ поставляется с макросом обрезки, который можно использовать для создания макроса обрезки и сохранения, но в нем есть ошибки. Предупреждение: мне потребовалось несколько лет, чтобы убедить моих коллег, что если они оставляют конечные пробелы в своем источнике, и я удаляю их при изменении файла, это не загрязняет diff ... - person Steve Jessop; 23.09.2008