2008-09-23 5 views
32

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

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

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

ответ

1

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

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

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

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

+0

Есть ли бесплатная (по крайней мере, как пиво) версия komodo? на их сайте я могу найти только пробную версию. – Laurent 2008-09-23 02:16:25

+0

Notepad ++ поставляется с макросом обрезки, который можно использовать для создания макроса с настройкой и сохранением, но это своего рода багги. Предупреждение: мне потребовалось несколько лет, чтобы убедить моих коллег, что если они оставят конечный пробел в своем источнике, и я его отключу, когда я модифицирую файл, это не «загрязняет diff» ... – 2008-09-23 02:57:04

+0

http: // www .activestate.com/Продукты/komodo_ide/komodo_edit.mhtml – Mez 2008-09-23 03:20:14

13

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

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

1

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

  • Там в "обрезать завершающие пробелы" макрос в TexFX> TexFX Edit.
  • Используйте это, чтобы создать макрос «обрезки и сохранения».
  • Связать этот макрос с 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> 

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

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

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

21

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

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

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

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

1

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

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

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

  1. Macro -> Начать запись
  2. Edit -> Обрезать Продольный Space
  3. Файл -> Сохранить
  4. Macro -> Остановить запись
  5. Макро -> Сохранить текущий записанный макрос (Trim and Save)
  6. Настройки-> Ярлык Mapper
  7. Главное меню -> Сохранить -> Ctrl + Alt + Shift + Сохранить
  8. Macros-> Обрезать и сохранить -> Ctrl + S
2

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

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

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

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

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

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

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

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

3

Я нашел еще один способ:

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

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

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

Смежные вопросы