[emacs] 텍스트 모드에서 Emacs에서 4 개의 들여 쓰기 설정

TAB주요 모드에서 버퍼를 누를 때 Emacs가 8 개의 스페이스 탭에서 4 개의 스페이스 탭으로 전환하는 데 실패했습니다 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 칸 이상 들여 쓰기 할 수있는 방법이 있습니까?



답변

(customize-variable (quote tab-stop-list))

또는 .emacs 파일의 custom-set-variablestab-stop-list 항목을 추가 하십시오 .

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120))))


답변

짧은 답변:

요점은 이멕스가 들여 쓰기 할 때 원하는 것을 삽입하도록 지시하는 것입니다. 이는 들여 쓰기 라인 기능을 변경하여 수행됩니다. 탭을 삽입하도록 변경 한 다음 4 개의 공백을 삽입하도록 변경하는 것보다 탭을 4 개의 공백으로 변경하는 것이 더 쉽습니다. 다음 구성은 문제를 해결합니다.

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)

설명:

주요 모드로 제어되는 들여 쓰기 에서 @ emacs manual :

각 주요 모드의 중요한 기능은 편집중인 언어에 맞게 들여 쓰기되도록 키를 사용자 정의하는 것입니다.

[…]

indent-line-function 변수는 현재 줄을 들여 쓰기 위해 (그리고 indent-region을 호출 할 때와 같은 다양한 명령) 사용할 함수입니다. 들여 쓰기 모드로 명령은 더 이상이 함수를 호출하지 않습니다.

[…]

많은 모드에서 기본값은 들여 쓰기 기준입니다.

들여 쓰기 기준 @ emacs 매뉴얼에서 :

들여 쓰기 기준 이전 공백이 아닌 줄의 다음 들여 쓰기 지점 아래로 공백.

[…]

이전의 비 공백 라인이 열 포인트 시작점을 넘어서서 들여 쓰기 지점이 없다면,`tab-to-tab-stop ‘이 대신 수행됩니다.

indent-line-function의 값을 insert-tab 함수로 변경하고 탭 삽입을 4 개의 공백으로 구성하십시오.


답변

업데이트 : Emacs 24.4 이후 :

tab-stop-list이제 암시 적으로 무한대로 확장됩니다. 기본값이로 변경되어 nil탭이 모든 tab-width열을 중지합니다 .

tab-stop-list, 설정을 유지할 수 있으므로 아래에 표시된 방식으로 더 이상 설정할 필요가 없습니다 nil.

원래 답변은 다음과 같습니다.


함수가 사용되기를 기다리고있을 (setq tab-stop-list 4 8 12 ................)때 와 같은 것을 보는 것은 항상 고통 스럽습니다 number-sequence.

(setq tab-stop-list (number-sequence 4 200 4))

또는

(defun my-generate-tab-stops (&optional width max)
  "Return a sequence suitable for `tab-stop-list'."
  (let* ((max-column (or max 200))
         (tab-width (or width tab-width))
         (count (/ max-column tab-width)))
    (number-sequence tab-width (* tab-width count) tab-width)))

(setq tab-width 4)
(setq tab-stop-list (my-generate-tab-stops))


답변

다음과 같이 탭을 설정하는 것이 더 쉬울 수 있습니다.

M-x customize-group

상기 Customize group:메시지 입력 indent.

들여 쓰기 옵션을 모두 설정하고 현재 세션에 대해 설정하거나 향후 모든 세션에 저장할 수있는 화면이 표시됩니다.

이렇게하면 사용자 지정 파일설정해야합니다 .


답변

(setq tab-width 4)
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80))
(setq indent-tabs-mode nil)


답변

(defun my-custom-settings-fn ()
  (setq indent-tabs-mode t)
  (setq tab-stop-list (number-sequence 2 200 2))
  (setq tab-width 2)
  (setq indent-line-function 'insert-tab))

(add-hook 'text-mode-hook 'my-custom-settings-fn)


답변

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)
(setq c-default-style "linux")
(setq c-basic-offset 4)
(c-set-offset 'comment-intro 0)

이것은 C ++ 코드와 주석 내부에서도 작동합니다.