Мне не удалось заставить Emacs переключаться с 8 пробелов на 4 пробела при нажатии TABв буферах в основном режиме text-mode
. Я добавил следующее к своему .emacs
:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)
Независимо от того, как я изменяю свой .emacs
файл (или локальные переменные моего буфера), TABкнопка всегда делает одно и то же.
- Если текст выше отсутствует, отступ 8 пробелов
- Если в предыдущей строке есть текст, отступ в начале второго слова
Как бы я ни любил Emacs, это раздражает. Есть ли способ сделать Emacs по крайней мере отступом в 4 пробела, если в предыдущей строке нет текста?
emacs
indentation
Cristian
источник
источник
(setq-default tab-width 4)
это не то же самое, что(setq tab-width 4)
быть уверенным, что вы не пропустили "-дефо"!Ответы:
или добавьте запись tab-stop-list в custom-set-variable в файле .emacs :
источник
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120)))
? Ну, пока это работает, я думаю ...: P'(tab-stop-list (quote (4)))
.quote
нужны два числа, чтобы продолжить последовательность до бесконечности. См .: stackoverflow.com/a/42148697/2662028Короткий ответ:
Ключевым моментом является указание emacs вставлять все, что вы хотите при отступе, это делается путем изменения функции indent-line. Проще изменить его, чтобы вставить вкладку, а затем изменить вкладки на 4 пробела, чем изменить их на вставку 4 пробелов. Следующая конфигурация решит вашу проблему:
Объяснение:
Из отступа, управляемого основным режимом @ emacs manual :
Из руководства по indent -lative @ emacs:
Просто измените значение indent-line-function на функцию insert-tab и настройте вставку табуляции как 4 пробела.
источник
Обновление: начиная с Emacs 24.4:
Это означает, что больше не нужно настраивать
tab-stop-list
способ, показанный ниже, так как вы можете оставить его наnil
.Оригинальный ответ следует ...
Мне всегда немного больно видеть такие вещи, как
(setq tab-stop-list 4 8 12 ................)
когдаnumber-sequence
функция сидит в ожидании использования.или
источник
tab-stop-list
теперь неявно расширяется до бесконечности. Его значение по умолчанию изменяется на ноль, что означает остановку табуляции в каждомtab-width
столбце». - так что на самом деле вы можете просто использовать значение по умолчаниюnil
.Вам может быть проще настроить вкладки следующим образом:
По
Customize group:
подсказке введитеindent
.Вы увидите экран, где вы можете установить все свои параметры отступов и установить их для текущего сеанса или сохранить их для всех будущих сеансов.
Если вы сделаете это таким образом, вы захотите настроить файл настроек .
источник
источник
источник
26.3
это работает для кода C ++ и комментария внутри тоже
источник
Эта проблема не вызвана отсутствием табуляции; Дело в том, что в emacs есть метод табуляции (new?), называемый indent -lative, который, кажется, предназначен для выравнивания табличных данных. Клавиша TAB отображается на метод indent-for-tab-command, который вызывает любой метод, на который установлена переменная indent-line-function, который является относительным к отступу методом для текстового режима. Я не нашел хороший способ переопределить переменную indent-line-function (перехват текстового режима не работает, так что, возможно, он сбрасывается после запуска перехватчиков режима?), Но один простой способ избавиться от этого Поведение состоит в том, чтобы просто изменить метод команды intent-for-tab-command, установив TAB на более простой метод tab-to-tab-stop:
(define-key text-mode-map (kbd "TAB") 'tab-to-tab-stop)
источник
Попробуй это:
Это заставит TAB всегда вставлять буквальный символ TAB с табуляцией каждые 4 символа (но только в текстовом режиме). Если это не то, о чем вы просите, пожалуйста, опишите поведение, которое вы хотели бы видеть.
источник
Вы можете добавить эти строки кода в ваш файл .emacs. Это добавляет ловушку для текстового режима, чтобы использовать вставку-вкладку вместо относительного отступа.
Я надеюсь, что это помогает.
источник
Мне было достаточно просто изменить стиль с помощью c-set-style.
источник
Добавьте это в ваш файл .emacs:
Это установит ширину отображаемой вкладки в 2 символа (измените число 2 на любое, что вы хотите)
Чтобы убедиться, что emacs использует табуляции вместо пробелов:
Кроме того, по умолчанию для Emacs при возврате по вкладке является преобразование его в пробелы, а затем удаление пробела. Это может раздражать. Если вы хотите просто удалить вкладку, вы можете сделать это:
Наслаждайтесь!
источник
Это единственное решение, которое предотвращает вставку вкладки для меня, без последовательности или преобразования вкладок в пробелы. Оба из них казались адекватными, но расточительными:
Обратите внимание, что
quote
для работы нужны два числа (но не больше!).Кроме того, в большинстве основных режимов (
Python
например) отступы в Emacs выполняются автоматически. Если вам нужно сделать отступ вне автоматического отступа, используйте:M-i
источник
Настройки могут быть теневыми,
(setq tab width 4)
поэтому либо используйте,setq-default
либо сообщите Настройке, что вы делаете. У меня также были проблемы, похожие на OP, и я починил их одним, не нужно было настраиватьtab-stop-list
или какие-либоinsert
функции:Было полезно добавить это сразу после (совет от emacsWiki):
источник
Лучшие ответы не работали, пока я не написал это в файле .emacs:
источник
Ты пробовала
источник
источник
Кстати, для C-режима я добавляю
(setq-default c-basic-offset 4)
в .emacs. См. Http://www.emacswiki.org/emacs/IndentingC для деталей.источник
Из моего файла инициализации отличается, потому что я хотел пробелы вместо вкладок:
источник
Модифицировал этот ответ без всякого хука:
источник