2011-02-28 4 views
24

몇 가지 이유 때문에 나는 TAB을 눌렀을 때 공백을 삽입하도록 편집기를 구성하는 것을 선호합니다.이맥스 : 공백 대신에 삽입 탭

하지만 최근에는 탭이 파일 만들기의 탭으로 남아 있어야한다는 것을 발견했습니다.

make 파일을 작성할 때마다 편집자를 재구성하지 않고 어떻게 탭 (\t이 아니라 " ")을 삽입합니까?

나는 다음과 같은 편집기를 사용 Emacs, Kate, geditVisual Studio 편집기.

답변

8

Emacs의 Makefile 모드는 올바른 위치에서 오른쪽 키를 누르는 한 탭과 공백을 삽입 할 위치를 처리합니다. 그 중 하나, 또는 질문에 대한 세부 사항을 놓쳤습니다.

+3

예, 이맥스의 경우 메이크 파일 모드 (또는 BSDmakefile-mode)를 사용하는 경우 공백 대신 탭 삽입이 자동으로 이루어져야합니다. 어떻게 든 탭을 삽입해야 할 때 엉망인 구성으로 인해 "C-q 탭"을 사용할 수 없으면. –

55

수동으로 Emacs에서 탭을 삽입하려면 ctrl-Q TAB을 사용하십시오. control-Q는 가능한 명령으로 해석하지 않고 다음 키를 삽입하도록합니다.

+1

도 효과가있었습니다. 감사. – pic11

+3

어떻게 이것이 받아 들여진 대답이 아닙니까? – Nikhil

+0

고마워요, 저를 잠시 도청했습니다. – Vincent

0

Smart inference of indentation style Emacs 위키의 NoTabs 페이지 섹션이 매우 유용했습니다. 대부분의 프로젝트에서 공백을 설정하는 방법을 보여 주지만, 편집중인 파일이 탭으로 시작하는 줄이 공백으로 시작하는 줄보다 탭에 있으면 탭으로 전환하십시오.

(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) 

이 여전히 될 수있다 : 여기

코드입니다 makefile과 같은 탭을 항상 가지고 있어야하는 새 파일을 편집 할 때 문제가 발생합니다. 이를 위해 모드 훅은 탭으로 설정합니다. 예 :

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