在Emacs中编辑Python

5 投票
3 回答
1267 浏览
提问于 2025-04-16 11:15

我看过python-mode和python.el,现在我在用python-mode.el。同时我也在用rope和ropemacs。我希望能找到一些对我有帮助的文档,或者其他的elisp包之类的东西。

我现在遇到的问题是,给我的代码缩进不一致。有的地方是两个空格,有的地方是四个空格。我想把这个整理一下,但不知道为什么,当我在emacs里选择“修复缩进”时,它基本上只是对每一行按了tab键,这样反而把代码搞乱了。我想保持相对缩进不变,但统一成4个空格。有没有什么简单的方法可以做到这一点?

我想我可以找到每个缩进不好的地方,把它们选中,然后用查询替换把2个空格换成4个空格。但这太依赖我的细心了,我得注意到哪里需要这样做。而且,代码量也挺大的。

有人告诉我说“自行车修理工”可以解决这个问题,但那个工具已经好几年没更新了……还有其他建议吗?

谢谢。

3 个回答

-1
(custom-set-variables
   ...
   '(indent-tabs-mode nil)
   '(tab-stop-list (quote (4 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120)))
   '(tab-width 4))

显然,这些是一些全局设置,适用于那些会遵循这些设置的模式(比如python-mode就会遵循)。我没有对python-mode的缩进设置做任何修改。

0

把py-smart-indentation设置为`t'。

现在的python-mode.el应该可以做到这一点。

http://launchpad.net/python-mode

如果遇到问题,请在那个地方反馈。

0

假设你已经按照Sven Marnach的建议整理过代码了,我猜现在你只需要让python-mode.el使用你喜欢的缩进风格就可以了?

你可以看看几个变量:py-indent-offsetpy-smart-indentation(也许还有py-continuation-offsetpy-honor-comment-indentation)。还有一个普通的indent-tabs-mode

你可以通过自定义这些设置来调整它们(按M-x然后输入customize-group,接着按RET再输入python,最后再按RET),或者你也可以在python-mode-hook里添加一个自定义函数。例如:

(add-hook 'python-mode-hook 'my-python-mode-hook)
(defun my-python-mode-hook ()
  (setq indent-tabs-mode nil
        py-smart-indentation nil
        py-indent-offset 4))

撰写回答