Установить 4 пробела в Emacs в текстовом режиме - PullRequest
151 голосов
/ 16 сентября 2008

Мне не удалось заставить 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 всегда делает то же самое.

  1. Если текст выше отсутствует, отступ 8 пробел
  2. Если в предыдущей строке есть текст, отступ в начале второго слова

Насколько я люблю Emacs, это раздражает. Есть ли способ сделать Emacs по крайней мере отступом в 4 пробела, если в предыдущей строке нет текста?

Ответы [ 19 ]

4 голосов
/ 21 августа 2009

Мне достаточно было просто изменить стиль с помощью c-set-style.

4 голосов
/ 04 мая 2012

Добавьте это в ваш файл .emacs:

Это установит ширину отображаемой вкладки в 2 символа (измените число 2 на любое, что вы хотите)

(setq default-tab-width 2)

Чтобы убедиться, что emacs на самом деле использует табуляции вместо пробелов:

(global-set-key (kbd "TAB") 'self-insert-command)

Кроме того, по умолчанию для Emacs при возврате по вкладке является преобразование его в пробелы и затем удаление пробела. Это может раздражать. Если вы хотите просто удалить вкладку, вы можете сделать это:

(setq c-backspace-function 'backward-delete-char)

Наслаждайтесь!

2 голосов
/ 16 марта 2017

Настройки могут затенить (setq tab width 4), поэтому либо используйте setq-default, либо сообщите Настройке, что вы делаете. У меня также были проблемы, похожие на OP, и я решил их с помощью одного, не нужно было настраивать tab-stop-list или какие-либо insert функции:

(custom-set-variables
 '(tab-width 4 't)
 )

Было бы полезно добавить это сразу после (совет от emacsWiki):

(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'cperl-indent-level 'tab-width)
1 голос
/ 10 февраля 2017

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

(setq-default
    indent-tabs-mode nil
    tab-width 4
    tab-stop-list (quote (4 8))
)

Обратите внимание, что для работы quote нужны два числа (но не больше!).

Кроме того, в большинстве основных режимов (например, Python) в Emacs отступы выполняются автоматически. Если вам нужно сделать отступ вне автоматического отступа, используйте:

M г

1 голос
/ 29 июня 2015

Лучшие ответы не работали, пока я не написал это в файле .emacs:

(global-set-key (kbd "TAB") 'self-insert-command)
0 голосов
/ 16 сентября 2008

Вы пробовали

(setq  tab-width  4)
0 голосов
/ 10 октября 2014

Из моего файла инициализации отличается, потому что я хотел пробелы вместо вкладок:


(add-hook 'sql-mode-hook
          (lambda ()
             (progn
               (setq-default tab-width 4)
               (setq indent-tabs-mode nil)
               (setq indent-line-function 'tab-to-tab-stop) 
               (modify-syntax-entry ?_ "w")       ; now '_' is not considered a word-delimiter
               (modify-syntax-entry ?- "w")       ; now '-' is not considered a word-delimiter 
               )))
0 голосов
/ 19 сентября 2013

Кстати, для C-mode я добавляю (setq-default c-basic-offset 4) к .emacs. Подробнее см. http://www.emacswiki.org/emacs/IndentingC.

0 голосов
/ 19 августа 2009
(setq-default tab-width 4)
(setq-default indent-tabs-mode nil)
...