有没有办法用按键格式化emacs中的完整python缓冲区?

我正在寻找通过点击几个键让Emacs格式化Python缓冲区的任何方法.按格式,我的意思是:

>用4个空格替换标签
>以79个字符正确包裹所有长线.这包括包装和包装.连接长字符串,包装长注释,包装列表,函数头等.
>不相关,但是当我按下回车键时,如果光标被自动选中,那就太好了.

总的来说,我想根据PEP 8格式化所有内容.

我已经找到了一个漂亮的打印机/代码美化/代码格式化程序,用于Python运行缓冲区,但无法找到一个开源的.

我的.emacs是here.

对于那些打算回答“你不需要Python的格式化程序,它的语言本质很漂亮”的人,我告诉你这不正确.在真实的软件系统中,评论应该为你自动包装,字符串将超过79个字符,标签级别为3深.如果没有关于格式化Python源代码的优点的哲学讨论,请直接帮我解决我的问题.

解决方法:

要将选项卡更改为空格并同时填充注释,可以使用以下命令:

(defun my-format-python-text ()
  "untabify and wrap python comments"
  (interactive)
  (untabify (point-min) (point-max))
  (goto-char (point-min))
  (while (re-search-forward comment-start nil t)
    (call-interactively 'fill-paragraph)
    (forward-line 1)))

哪个你可以绑定到你选择的键,大概是这样的:

(eval-after-load "python"
  '(progn
     (define-key python-mode-map (kbd "RET") 'newline-and-indent)
     (define-key python-mode-map (kbd "<f4>") 'my-format-python-text)))

请注意RET键的设置以自动缩进.

如果您希望所有带有空格的选项卡都只有内置命令,这是一个可能的顺序:

C-x h           ;; mark-whole-buffer
M-x untabify    ;; tabs->spaces

要使填充列和标签宽度符合您的要求,请添加到.emacs:

(setq fill-column 79)
(setq-default tab-width 4)

可以说,tab-width应设置为8,具体取决于其他人如何在您的环境中缩进代码(其中8是其他编辑器的默认代码).如果是这种情况,你可以在’python-mode-hook中将它设置为4.这取决于你的环境.

上一篇:emacs:将python空间转换为制表符


下一篇:基于阿里云搭建的WEB-RTC产品体验,人人都可以拥有。打开浏览器,带上耳机,开始音视频通话吧