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





Честно говоря, мне это кажется ожидаемым поведением. Я часто использую пустые строки, чтобы разбить код, чтобы сделать его более читабельным, и если программа заставит меня снова перейти на табуляцию, это ОЧЕНЬ раздражает.
Я могу понять это как разочарование в чем-то вроде Python, но не в PHP ... Хотя до фигурных скобок и т. д. Это может раздражать.
Однако попробуйте Комодо Править, это бесплатно, и я обнаружил, что в целом он лучше всего подходит для меня с автоматическим отступом. Кажется, он выучил мой стиль кодирования (или у него есть параметры для всех стилей кодирования, и он подбирает то, что вы используете) и автоматически делает все правильно.
Обновлено: как вы отметили в своем ответе, проблема связана с «конечным пробелом» - я не слишком хорошо знаю Notepad ++, но в большинстве современных редакторов, предназначенных для кодирования, есть опция «убирать конечные пробелы при сохранении» (я знаю Komodo делает!)
Notepad ++ поставляется с макросом обрезки, который можно использовать для создания макроса обрезки и сохранения, но в нем есть ошибки. Предупреждение: мне потребовалось несколько лет, чтобы убедить моих коллег, что если они оставляют конечные пробелы в своем источнике, и я удаляю их при изменении файла, это не «загрязняет разницу» ...
Я могу подтвердить, что эта проблема возникает с Notepad ++ версии 5.0.3. Единственный связанный параметр, который я нашел, находится в разделе «Настройки»> «Настройки»> «MISC»> «Автоотступ», но он просто включает или выключает автоматический отступ.
Я использовал Editra (http://editra.org) в прошлом и был доволен этим, и, похоже, он обрабатывает отступы так, как вы описываете.
Я сейчас пишу прозу и это именно то, что мне нужно, ура!
Это то, что я тоже искал. Спасибо.
Что я делаю в Notepad ++:
Я бы сказал вам, как записать макрос, который использует другой макрос, но это было много лет назад, и теперь я просто копирую файл. Я ожидаю, что это просто работает, или, возможно, я сделал это, вручную отредактировав файл ярлыков. Это выглядит так (в 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 ++ так, чтобы он не очищал буфер отмены при сохранении: в противном случае ошибка здесь была бы немного катастрофой. Но я все равно это установил.
1) Сначала установите плагин NppAutoIndent, если у вас его нет.
Plugins > Plugin Manager > Show Plugin Manager, then install NppAutoIndent from the "Available" tab of that menu.
2) Это поведение можно отключить, выполнив:
Plugins > NppAutoIndent > Previous line
3) Если этот параметр отключен, вам может потребоваться сначала проверить этот параметр:
Plugins > NppAutoIndent > Ignore language
Установка этого плагина на «Smart Indent» хорошо работала с PHP.
Мне пришлось перейти в «Плагины»> «Диспетчер плагинов»> «Показать диспетчер плагинов», затем установить NppAutoIndent из вкладки «Доступно» этого меню (онлайн-загрузка плагина не сработает). После установки перейдите в Плагины> NppAutoIndent, затем отметьте «Игнорировать язык» и «Предыдущая строка».
У меня такой же отступ, но с табуляцией вместо пробелов. Это бесит питона. Как можно сделать такую простую вещь так плохо.
Ааа, спасибо. Я прибегал к тому, чтобы ставить «проход» после каждого блока в Python, пока не нашел это.
@Qutorial: Замечательный момент о необходимости «игнорировать язык» в некоторых случаях; Я взял на себя смелость добавить это к ответу.
это предполагает, что у вас включен плагин NppAutoIndent ... Мой не был включен, НО я все еще получал автоматический отступ ... это означает, что в Npp существует еще одна функция, которая также управляет автоматическим отступом.
Обрезать конечное пространство и сохранить надоедливо. Вы заметите, что случайно вставляете в документы несколько символов.
Вместо этого запишите макрос и привяжите его к своим ctrl + s.
Вот как это сделать:
К сожалению, Notepad ++ не обрезает вторую пустую новую строку автоматически. Но в качестве обходного пути я согласен с user108570: макрос был бы идеальным.
Мне нравится проводить концептуальное различие между переводом строки "мягкий" и "жесткий", аналогично двум типам вкладок. Результат первого зависит от текущего стиля и настроек отступа. Однако на выходе последнего всегда должна быть простая, чистая, чистая ванильная новая строка.
Наиболее часто используемый вариант перевода строки, конечно же, должен быть сопоставлен с более простой комбинацией клавиш. Для большей части вашего редактирования вы, вероятно, захотите оставить «мягкий перевод строки» сопоставленным с клавишей «Enter» и изменить «Ctrl + Enter», чтобы активировать «жесткий перевод строки».
В «Меню -> Настройки -> Сопоставление клавиш -> Главное меню» вы увидите, что по умолчанию «Ctrl + Enter» отображается на «Завершение слова». Это необходимо сначала отключить, установив для него значение «Нет».
Затем просто запишите макрос:
На последнем шаге появится диалоговое окно, в котором вы должны назвать макрос (например, «Hard Linefeed») и установить его сопоставление (например, «Ctrl + Enter»).
На шаге 3 мы могли добавить что угодно (для печати). Его единственная цель - добавить что-то для удаления, если до этого ничего не было, так что любой текст, следующий за курсором, останется нетронутым.
Я нашел другой способ:
Используйте макрос «Обрезать трейлинг и сохранить», ярлык «Alt + Shift + S»
Если вам это нужно постоянно, просто замените ярлык сохранения на ярлык макроса «Обрезать трейлинг и сохранить».
Я обычно использую блокнот ++ только при программировании, так что мне это хорошо подходит.
Есть ли бесплатная (хотя бы как в пивной) версия комодо? на их сайте я могу найти только "пробную" версию.