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버튼은 항상 동일한 작업을 수행합니다.
- 위의 텍스트가 없으면 8 칸 들여 쓰기
- 이전 줄에 텍스트가 있으면 두 번째 단어의 시작 부분에 들여 쓰기
내가 Emacs를 좋아하는 한 이것은 성가시다. 이전 줄에 텍스트가 없을 때 Emacs가 4 칸 이상 들여 쓰기 할 수있는 방법이 있습니까?
답변
(customize-variable (quote tab-stop-list))
또는 .emacs 파일의 custom-set-variables 에 tab-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 ++ 코드와 주석 내부에서도 작동합니다.