我想知道在Python代码中每行包含79个字符是否可以在emacs中自动且智能地完成? 通过智能化,我的意思是它可以在适当的位置打破一长串代码。
如果不能自动完成,可以半自动地完成,或者比完全手动更方便(例如手动计算每行字符数)?
顺便说一句,我假设每行79个字符是一个好习惯。如果我错了,请随时纠正我。
感谢。
答案 0 :(得分:5)
是的,这是一个很好的做法,那里有很多解决方案,但它们不是"自动",大多数依靠只是在你超过限制时向你展示,而不是制作为你而改变。
One"自动"解决方案是内置的auto-fill-mode
。
进一步的想法/讨论:
阅读Emacs Wiki上的这篇文章:EightyColumnRule
它提供了几种非自动方式来帮助您保持线条少于80个字符。
内置于whitespace-mode
的emacs可以突出显示超过一定长度的所有行。
column-marker
可用于在特定列的缓冲区中绘制一条线。
column-enforce-mode(我是此作者)可以像whitespace-mode
一样工作,但它只会突出显示一行中超过80列的文本,而不是整行。
有很多关于这个主题的讨论要找到并找到更多解决方案:
How can I make emacs highlight lines that go over 80 chars?
Have emacs highlight characters over 80?
http://emacsredux.com/blog/2013/05/31/highlight-lines-that-exceed-a-certain-length-limit/
这是我在init中设置的自定义解决方案,它设置当前缓冲区的边距,使缓冲区中的可编辑空间只有80列宽。当你的文字进入下一行时,你知道你何时超过了限制。
(defun toggle-80-editting-columns-balanced (&optional columns)
"Set both window margins so the edittable space is only 80 columns."
(interactive "p")
(let ((margins (window-margins)))
(if (or (car margins) (cdr margins))
(set-window-margins nil 0 0)
(let* ((change (max (- (window-width) (or columns 80)) 0))
(left (/ change 2))
(right (- change left)))
(set-window-margins nil left right)))))