Как отключить авто-отступ новых строк?


37

Я недавно обновил emacs до версии 24.4.1, и кое-что изменилось в отступе новых строк. Когда я нажимаю, enterя ожидаю просто «голый» символ новой строки в точке, где присутствовал курсор, в частности, если я нахожусь в середине строки, эта строка должна быть разбита, и ни один символ не должен быть удален, включая пробелы. К сожалению, это не случай.

Вот пример:

a b

Когда я ставлю курсор сразу после aи нажимаю, enterя получаю:

a
b

в то время как это должно быть

a
 b

Я немного погуглил и возможно это из-за авто-отступа, как это отключить? Я говорю о текстовом или фундаментальном режиме, если это имеет значение.


7
Для потомков у меня есть комментарий, чтобы добавить к этому. Многие проблемы «недавнего обновления» можно решить, прочитав НОВОСТИ с помощью M-x view-emacs-news(или C-h n). Вы можете прочитать НОВОСТИ для любой предыдущей версии, добавив префикс arg. При просмотре НОВОСТЕЙ и поиске «отступа» первый результат очень похож на ответ Дрю. Просто полезный совет по любым вопросам, связанным с обновлениями.
няня

Ответы:


49

Отключить electric-indent-mode:

(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

Это работает с любой версией Emacs. Эта досада или блестящая новая функция, в зависимости от вашей точки зрения, была введена по умолчанию в Emacs 24.4.

Смотрите также этот похожий пост на StackOverflow.

(Тем не менее, звучит так, как будто вы говорите обратное и хотите RET сделать отступ, но не получаете этот отступ. Что изменилось, так это то, что RET("Enter") теперь отступает автоматически, и вам нужно нажать, C-jчтобы получить только новую строку с без отступов. Они поменялись местами RETи C-j, по сути, если вы хотите RETсделать отступ, то новое поведение по умолчанию должно дать вам то, что вы хотите. В любом случае, режим такой electric-indent-mode: включите или выключите, как вам нравится.)


1

Существует возможность вставить перевод строки символ с C-q C-jи есть 3 команды , чтобы разделить строку: open-line C-o, split-line C-M-oи newline RET, C-mвы использовали. Если вы поместите курсор, как вы сказали после, aи нажмете, C-oто текущая строка будет прервана после курсора, и каждый символ будет в следующей строке. split-line сохранит позицию столбца, так что перед содержимым будет вставлен дополнительный пробел.

Хм, интересно, с C-M-oтекущей строкой в ​​конце также появляется лишний пробел, так что позиции bи курсора выстраиваются в линию после изменения.

В основном режиме C-jизменяет буфер на ваше ожидание на моей машине и C-jпривязывается кelectric-newline-and-maybe-indent

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