Emacs: вставить вкладку вместо пробелов - PullRequest
25 голосов
/ 28 февраля 2011

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

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

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

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

Ответы [ 3 ]

58 голосов
/ 28 февраля 2011

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

8 голосов
/ 28 февраля 2011

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

1 голос
/ 05 октября 2017

Умный вывод стиля отступа на странице 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-mode или в любом другом режиме, в котором я хочу использовать интеллектуальный отступ]

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

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

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