我正在跳转到EMACS,我无法在我的.emacs
文件中找到我需要做的事情来获取php-mode 和所有其他模式以插入4个空格而不是TAB。帮助
更新:
当我点击标签时,我仍然会在给定答案的普通文件中获得8个空格。在php模式中,我仍然获得2个空格。在php模式下点击标签什么都不做,常规EMACS中的标签添加了8个空格。
UPDATE2:
这就是我.emacs
中的内容:
(require 'color-theme)
(color-theme-calm-forest)
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq c-basic-offset 4)
仍然在常规文件中有8个空格,而在PHP文件中,标签不起作用,或者现在随机跳转。我的php模式来自Ubuntu 9.10 apt-get install php-mode
UDATE3:
好这就是我想要的......
这些规则需要适用于所有文件,但如果需要,首先需要应用于(文本)和PHP文件。
答案 0 :(得分:9)
将变量indent-tabs-mode更改为nil。您可以通过M-x set-variable
以交互方式(仅针对一个缓冲区)执行此操作。要使其永久化(并且对于所有缓冲区),请输入
(setq-default indent-tabs-mode nil)
在您的初始文件中。
要使标签在大多数模式下只做4个空格,还要添加
(setq-default tab-width 4)
对于基于C的模式(如PHP),您将不得不这样做:
(setq c-basic-offset 4)
答案 1 :(得分:3)
你错过了(setq c-basic-indent 4)。所以你应该:
;; 4 spaces rather than tabs
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq c-basic-offset 4)
(setq c-basic-indent 4)
答案 2 :(得分:2)
Emacs中的TAB的默认行为(在编程模式下)是自动缩进正确的位置,其中这个位置是根据主要模式描述的缩进规则决定的(它是其中一个主要模式中最重要的工作,实际上,通常比颜色突出显示要求更高。当然,如果该行已经缩进到正确的位置,那么点击TAB将不会执行任何操作。
所以你可以强迫TAB以愚蠢的方式行事,就像你问的那样,但是你会错过大部分的乐趣。 例如。你可以做点什么
(global-set-key "\t"
(lambda ()
(interactive)
(let ((prevline-indent (save-excursion (forward-line -1) (current-indentation))))
(if (< (current-column) prevline-indent))
(indent-to prevline-indent)
(insert " ")))))
但相反,我建议您按照Emacs的方式使用TAB,并向Emacs解释您希望缩进代码的方式。可能通过设置如下内容:
(setq-default indent-tabs-mode nil) ;; Prefer SPC over TAB when indenting.
(setq c-basic-offset 4) ;; I like indenting by 4 spaces.
根据你的说法,你的php模式中的TAB缩进不能正常工作,所以你的php模式可能只是一个bug。准确地告诉我们它在哪种情况下工作正常,显示错误缩进的文本,并解释缩进与您的期望不符的方式。
答案 3 :(得分:0)
您可以使用M-x untabify
将所有标签转换为空格。
那么在这种情况下,您可以为您的php次要模式将indent-tabs-mode
的值设置为nil
。
你也可以找到wiki:http://www.fnal.gov/docs/products/emacs/emacs/emacs_23.html#SEC185和Jamie Zawinski的帖子:http://www.jwz.org/doc/tabs-vs-spaces.html来提供信息。
答案 4 :(得分:0)
这就是我所做的。
;;;; Tab settings ;;;;
;Tab width is 3
(setq tab-width 3)
(setq-default tab-width 3) ;;going to force it. yessir.
;Use spaces always.
(setq-default indent-tabs-mode nil)
;Jump by 3.
(setq c-basic-offset 3)
;this defaulted to 4 and had to be reset to 3. the prior settings did not override it. Lame.
(setq perl-indent-level 3)
;Tab stop list out to col 60
;Manually set by x3
(setq tab-stop-list '(3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60))