Emacs는 들여쓰기를 위해 Tab을 사용합니다.

Emacs는 들여쓰기를 위해 Tab을 사용합니다.

Emacs가 전역적으로 코드를 들여쓰기할 때 공백 대신 탭만 사용하도록 하는 방법이 있습니까? 나는 tabify 명령을 알고 있습니다. 나는 기본 구성처럼 탭과 공백을 혼합하는 대신 탭을 사용하는 자동 들여쓰기를 선호합니다.

답변1

음, 탭 들여쓰기를 사용하려면 그것이 기본값인지 indent-tabs-mode확인 해야 합니다 . t하지만 얻으려면오직탭에서는 각 줄이 배수 tab-width(기본값 8)로 들여쓰기되도록 들여쓰기 모드를 조정해야 합니다. 예를 들어 C 모드에서는 8로 설정할 수 있습니다 c-basic-offset.

또는 tab-widthEmacs가 각 들여쓰기 수준에 도달하기 위해 공백을 사용할 필요가 없도록 이 값을 더 작은 값으로 줄일 수 있습니다. 하지만 이렇게 하면 코드를 처리해야 하는(표준 8자 탭 정지를 사용하는) 다른 모든 사람이 짜증을 낼 것입니다.

다시 생각해 보시기 바랍니다. 개인적으로 저는 탭 들여쓰기가 있는 코드를 처리하는 것이 짜증스럽다고 생각합니다. 특히 8개의 공백 탭처럼 보이지 않는 경우에는 더욱 그렇습니다. (가장 나쁜 점은 코드의 일부 줄은 공백을 사용하고, 일부 줄은 탭을 사용하는데, 분명히 8개의 공백 탭이 아니라는 것입니다.) 우리 모두에게 부탁을 드리고 (setq indent-tabs-mode nil).

답변2

Emacs에는 미리 정의된 여러 C 들여쓰기 스타일이 함께 제공됩니다.당신만의 글을 쓰세요그 중 어느 것도 귀하의 요구에 적합하지 않은 경우. ~에표준 스타일linux, 8개의 열 들여쓰기가 있고 너비가 8인 탭을 사용하는 (Linux 커널 소스 코드에 사용되는 스타일)을 찾고 있는 것 같습니다 .

이 설정을 다음 항목에 넣어 C의 기본 스타일로 설정할 수 있습니다 .emacs.

(setq c-default-style "linux")
(defun my-c-mode-hook ()
  (setq indent-tabs-mode t)
  (setq tab-width 8))
(add-hook 'c-mode-hook 'my-c-mode-hook)

그러나 선호도가 다른 사람들과 공동 작업할 때는 이러한 설정을 사용하지 마십시오. 특히 탭을 사용하면 적이 됩니다. 특정 파일을 특정 스타일로 저장하려면 다음을 사용할 수 있습니다.파일 변수Emacs에서 파일을 편집하는 모든 사람이 동일한 설정을 사용하고 있는지 확인하십시오.

/*
 * Local Variables:
 * c-file-style: "linux"
 * indent-tabs-mode: t
 * tab-width: 8
 * End:
 */

전체 프로젝트에 비슷하게 들여쓰기된 C 파일이 있는 경우 다음을 사용하세요.디렉터리 변수모든 파일을 오염시키는 대신. .dir-locals.el다음 내용을 포함 하는 파일을 만듭니다 .

((c-mode . ((c-file-style . "linux")
            (indent-tabs-mode . t)
            (tab-width . 8))))

답변3

탭은 나를 짜증나게 하지만 다른 사람의 코드에서 작업할 수 있도록 들여쓰기에 탭만 사용하도록 emacs를 얻는 방법을 알아내야 합니다. 이것은 나에게 효과적입니다.

(defun tmp/change-indent ()
  (interactive)
  (setq indent-tabs-mode t)
  (setq tab-width 2))

뭔가를 엉망으로 만들기 전에 Tab 키를 누르면 자동으로 2개의 열이 들여쓰기되는 것을 발견했습니다. 2열 오프셋과 일치하도록 "tab-width"를 설정하면 emacs가 자동 서식 지정을 수행할 때 탭 문자를 사용할 수 있습니다. 나는 nxml 모드에서 작업하고 있었지만 이것은 어떤 모드에서도 작동할 것이라고 생각합니다.

관련 정보