Read in: English · Español · Français · Deutsch · Português (Brasil) · 日本語 · 中文(简体) · Русский
有没有遇到过某个代码风格的小怪癖,慢慢把你逼疯?在工作中,我们团队遵循 Black 代码风格——只有一个例外:使用单引号而不是双引号。听起来无伤大雅,对吧?
结果这个小小的偏差却带来了惊人的麻烦。
「查找和替换」疲劳
当然,我可以手动查找并替换引号。但在多个文件中反复这样做很繁琐。后来我尝试用 Cursor 来处理,结果却带来了一整套新的麻烦:大量的 token 消耗、缓慢的处理速度,还需要每隔几步就推它一下,就像哄一个固执的机器人助手。
这打乱了我的工作节奏。
Unify(和 uv)登场
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 不仅整理了我的代码——还让我重新夺回了时间和专注力。如果你也困在引号风格的炼狱中,这一行命令或许就是你的逃生通道。
