Подтвердить что ты не робот

Emacs: вставить вкладку вместо пробелов

По нескольким причинам я предпочитаю, чтобы мой редактор вставлял пробелы при нажатии TAB.

Но недавно я обнаружил, что вкладки должны оставаться в виде вкладок в файлах make.

Как вставить вкладку (\t, not " ") без перенастройки редакторов каждый раз, когда мне нужно писать файлы make?

Я использую следующие редакторы: Emacs, Kate, gedit и Редактор Visual Studio.

4b9b3361

Ответ 1

Режим Makefile Emacs "Устанавливает вкладки и пробелы, пока вы нажимаете правые клавиши в нужных местах. Либо это, либо я пропустил некоторые детали в вопросе.

Ответ 2

Чтобы вручную вставить вкладку в Emacs, используйте ctrl-Q TAB. control-Q заставляет следующий ключ вставляться, а не интерпретироваться как возможную команду.

Ответ 3

Умный вывод стиля отступа раздел страницы NoTabs на EmacsWiki был очень полезен. Он показывает вам, как настраивать пространства для большинства проектов, но переключитесь на вкладки, если файл, который вы редактируете, имеет больше строк, начиная с вкладки, чем строки, начинающиеся с пробела.

Здесь код:

(defun infer-indentation-style ()
  ;; if our source file uses tabs, we use tabs, if spaces spaces, and if        
  ;; neither, we use the current indent-tabs-mode                               
  (let ((space-count (how-many "^  " (point-min) (point-max)))
        (tab-count (how-many "^\t" (point-min) (point-max))))
    (if (> space-count tab-count) (setq indent-tabs-mode nil))
    (if (> tab-count space-count) (setq indent-tabs-mode t))))

[в моем крюке c-режима или в любом другом режиме, в котором я хочу иметь интеллектуальное отступы]

(setq indent-tabs-mode nil)
(infer-indentation-style)

Это может быть проблемой при редактировании новых файлов, которые всегда должны иметь вкладки, такие как make файлы. Для них ваш крюк режима просто установил бы его на вкладки. Например:

(add-hook 'makefile-mode-hook 
  '(lambda() 
     (setq indent-tabs-mode t)
   )
)