V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
oIMOo
V2EX  ›  Python

Python 代码如何加入 hard warp?

  •  
  •   oIMOo · 2018-03-12 23:20:13 +08:00 · 3441 次点击
    这是一个创建于 2440 天前的主题,其中的信息可能已经有所发展或是发生改变。

    soft warp = 软行换。也就是只是显示的时候换行了而已,并不将换行保存到文件中。

    hard warp = 硬换行。一次换,终生换,在哪里打开、用什么打开都是那里换。


    平常用 Atom 写 C,使用 atom-beautify package 在保存的时候,都会在 length-weigth = 80 处换行。

    现在想让 python 代码也在页宽为 80 的地方换行 (加 \ 并换行),同样使用 atom-beautify package, 测试了 autopep8 和 yapf 都没有这个功能。

    Atom 自带的也只有 soft warp。

    Sublime 改了 user setting, 同样是 soft warp。

    google 一圈,没人有同样的强迫症,特来求助......

    24 条回复    2018-03-14 09:58:10 +08:00
    oIMOo
        1
    oIMOo  
    OP
       2018-03-12 23:28:51 +08:00
    autopep8 --in-place --aggressive --aggressive <file_name> 也木有蛋蛋用。
    tangyouze
        2
    tangyouze  
       2018-03-12 23:45:41 +08:00   ❤️ 1
    80 行的标准 实在是爱不动 intellij 似乎是在某些地方 自动加 \ 并换行的
    我个人的喜好一般是超过 120 就重构代码 让他不超过 120 列 (加\并且换行感觉真的好丑-,-)
    oIMOo
        3
    oIMOo  
    OP
       2018-03-12 23:48:47 +08:00
    @tangyouze

    刚刚想起我有学生版 PyCharm,是了一下居然可以,开心爆了。

    不过在我的小破电脑上软件加载起来有点慢......

    所以还是想有什么办法让 atom 实现。

    而且毕竟学生包一年后就到期了......
    qweer29
        4
    qweer29  
       2018-03-12 23:54:00 +08:00 via Android
    @oIMOo 如果仍然有学生邮箱的话,Pycharm 可以继续申请激活的。
    oIMOo
        5
    oIMOo  
    OP
       2018-03-13 00:05:20 +08:00
    @qweer29

    毕业之后就会被注销了......

    如果有用 atom python coder,欢迎指出到底应该怎么办......

    我现在无比尴尬的用 atom 写,然后用 PyCharm 去换行......
    xmoiduts
        6
    xmoiduts  
       2018-03-13 01:14:29 +08:00 via Android
    vscode 全选 格式化选中代码 美滋滋
    *虽然原理不明,可能就是 autopep8,但是换行确实写入了文件。对应的“软换行”是“查看”-“切换(呈现)自动换行”。
    oIMOo
        7
    oIMOo  
    OP
       2018-03-13 05:15:26 +08:00
    @xmoiduts

    你是来炫耀的……
    congeec
        8
    congeec  
       2018-03-13 06:09:48 +08:00   ❤️ 1
    wrap
    feloxx
        9
    feloxx  
       2018-03-13 07:48:25 +08:00 via Android
    老哥,pycharm 怎么弄成软换行呀
    JsonLee
        10
    JsonLee  
       2018-03-13 08:33:32 +08:00 via iPhone
    都是手动硬换的说
    oIMOo
        11
    oIMOo  
    OP
       2018-03-13 08:42:30 +08:00 via iPhone
    @congeec

    具体如何呢?

    排除手动回车的方法……
    congeec
        12
    congeec  
       2018-03-13 09:11:23 +08:00
    @oIMOo
    vim -> :h formatexpr
    PyCharm 社区版完全够用,免费
    snowolfy
        13
    snowolfy  
       2018-03-13 09:52:51 +08:00
    emmm...是 wrap 而非 warp...
    glasslion
        14
    glasslion  
       2018-03-13 10:13:12 +08:00
    用 \ 换行本来就是被社区抵制的风格 , autopep8 和 yapf 当然不可能这么干。 现在都是用括号焕发哪个的
    ipwx
        15
    ipwx  
       2018-03-13 10:28:20 +08:00
    人工换行比较好,自动换行有时候特别傻。
    oIMOo
        16
    oIMOo  
    OP
       2018-03-14 03:26:05 +08:00 via iPhone
    @snowolfy

    你不说我还没注意,一直觉得用的是 warp 弯曲之类的意思……

    谢谢指出。
    oIMOo
        17
    oIMOo  
    OP
       2018-03-14 03:26:29 +08:00 via iPhone
    @congeec 谢谢谢谢,之前一直以为弯曲拿个单词……
    oIMOo
        18
    oIMOo  
    OP
       2018-03-14 03:27:03 +08:00 via iPhone
    @feloxx 我的是硬来的硬换行,哈哈。
    oIMOo
        19
    oIMOo  
    OP
       2018-03-14 03:29:15 +08:00 via iPhone
    @glasslion 最后用括号焕发是什么意思啊?
    oIMOo
        20
    oIMOo  
    OP
       2018-03-14 03:30:24 +08:00 via iPhone
    @ipwx 主要是用自动换行学习姿势,毕竟看到把 [ 留在上一行,后面另起一行,这种事我无论如何也做不到……
    snowolfy
        21
    snowolfy  
       2018-03-14 09:46:17 +08:00
    @oIMOo
    类似这种么?
    ```
    foo = [
    'a',
    'b',
    'c'
    ]
    ```

    我觉得我更喜欢这种风格。而且好像看到的也多是这种风格。
    估计看个人风格吧。我要求我这边的都不允许出现 `\` 来换行的。
    glasslion
        22
    glasslion  
       2018-03-14 09:53:51 +08:00
    @oIMOo 打错了, 焕发 -> 换行

    https://www.python.org/dev/peps/pep-0008/


    The preferred way of wrapping long lines is by **using Python's implied line continuation inside parentheses, brackets and braces**. Long lines can be broken over multiple lines by wrapping expressions in parentheses. **These should be used in preference to using a backslash for line continuation.**

    income = (gross_wages
    + taxable_interest
    + (dividends - qualified_dividends)
    - ira_deduction
    - student_loan_interest)

    Google Python Style Guide:
    https://google.github.io/styleguide/pyguide.html?showone=Line_length#Line_length

    Do not use backslash line continuation.
    Make use of Python's implicit line joining inside parentheses, brackets and braces. If necessary, you can add an extra pair of parentheses around an expression.
    oIMOo
        23
    oIMOo  
    OP
       2018-03-14 09:56:02 +08:00
    @snowolfy

    类似于:

    ...split("overable'>")[

    -1].split("blahblah...
    oIMOo
        24
    oIMOo  
    OP
       2018-03-14 09:58:10 +08:00
    @glasslion

    我就是想遵照这个标准,本来想着从自动换行开始,一方面省事,一方面掌握规律。

    我的 atom 貌似可以换行了,不过是正在输入中的代码,而不能对已有的代码文件进行换行处理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1062 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:37 · PVG 03:37 · LAX 11:37 · JFK 14:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.