我在Ubuntu 10.04上使用emacs 23.1.1。我希望使用2空格缩进在Python中编程。 emacs看起来有python的默认模式(python.el?)。
我将以下内容放在我的.emacs中:
;; Only spaces, no tabs
(setq indent-tabs-mode nil)
;; Always end a file with a newline
(setq require-final-newline nil)
;; Don't know which of these might work
(setq-default tab-width 2)
(setq-default python-indent 2)
(setq-default py-indent-offset 2)
当我编辑Python文件时,它使用4空格缩进。当我尝试C-h v python-indent时,它说:
python-indent's value is 4
Local in buffer webpage_cache.py; global value is 2
This variable is safe as a file local variable if its value
satisfies the predicate `integerp'.
Documentation:
Number of columns for a unit of indentation in Python mode.
See also `M-x python-guess-indent'
You can customize this variable.
也就是说,它是4,而不是2. Grr。我尝试自定义变量并保存,仍然是4.我尝试了自定义组缩进,仍然是4。
如何让emacs注意?
答案 0 :(得分:17)
您的.emacs文件或.emacs引用的文件中添加:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
如果你想本地化
,你可以放入一个钩子;; Python Hook
(add-hook 'python-mode-hook
(function (lambda ()
(setq indent-tabs-mode nil
tab-width 2))))
编辑:我发现以下问题可能会弄乱我的设置:
对于这些问题,我发现创建钩子并对变量进行本地化可能有所帮助。
答案 1 :(得分:15)
您可以将其放入.emacs文件中:
(add-hook 'python-mode-hook '(lambda ()
(setq python-indent 2)))
原因
(setq-default python-indent 2)
不起作用可能因为加载.emacs时此变量不会退出。 (但我是一个emacs新手。我不确定我的解释。)
但是,PEP 8 -- Style Guide for Python Code建议“每个缩进级别有4个空格”,我发现4个空格更具可读性。我实际上使用这段代码来强制缩进4个空格。
答案 2 :(得分:15)
我自己遇到了这个问题,我认为python-indent
的帮助包含了一个没有人提到过的大线索:
See also `M-x python-guess-indent'
如果您未通过将其设置为python-guess-indent
来自定义nil
,那么python.el
将自动为每个Python缓冲区(包含缩进文本)设置python-indent
,您的python-indent
自定义无效。 (另一方面,在罗马时......)
最后,这是我.emacs
文件中的内容(忽略所有其他自定义变量):
(custom-set-variables
'(python-guess-indent nil)
'(python-indent 2))