Unify 把我从手动引号地狱中拯救了出来

Read in: English · Español · Français · Deutsch · Português (Brasil) · 日本語 · 中文(简体) · Русский

有没有遇到过某个代码风格的小怪癖,慢慢把你逼疯?在工作中,我们团队遵循 Black 代码风格——只有一个例外:使用单引号而不是双引号。听起来无伤大雅,对吧?

结果这个小小的偏差却带来了惊人的麻烦。

「查找和替换」疲劳

当然,我可以手动查找并替换引号。但在多个文件中反复这样做很繁琐。后来我尝试用 Cursor 来处理,结果却带来了一整套新的麻烦:大量的 token 消耗、缓慢的处理速度,还需要每隔几步就推它一下,就像哄一个固执的机器人助手。

这打乱了我的工作节奏。

Unify(和 uv)登场

我已经安装了 uv ,所以引入 Unify 非常顺畅:

uv tool install --python=python3.10 unify

这个 --python=python3.10 的部分很关键——否则 uv 会默认使用 Python 3.13,这会导致 lib2to3 出问题(没错,它现在依然相关!)。

Traceback (most recent call last):
  File "/Users/abramowi/.local/bin/unify", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 230, in main
    return _main(sys.argv,
                 standard_out=sys.stdout,
                 standard_error=sys.stderr)
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 210, in _main
    if format_file(name, args=args, standard_out=standard_out):
       ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 144, in format_file
    encoding = detect_encoding(filename)
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 125, in detect_encoding
    from lib2to3.pgen2 import tokenize as lib2to3_tokenize
ModuleNotFoundError: No module named 'lib2to3'

Unify 依赖它,所以用旧版本的 Python 就能解决问题。

解决一切的单行命令

只需要这一步,就能原地切换为单引号:

unify --quote "'" --in-place /path/to/file.py

就这样,不再需要折腾。不再浪费 token。也不用再去哄着 AI 工具听话了。

前后对比

# Before
print("Hello, world!")

# After
print('Hello, world!')

总结

有时候,最好的解决方案就是精准的一刀。Unify 不仅整理了我的代码——还让我重新夺回了时间和专注力。如果你也困在引号风格的炼狱中,这一行命令或许就是你的逃生通道。

WordPress and DreamHost: Perfect Duo

Leave a Reply

Your email address will not be published. Required fields are marked *