ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

Python改进版

作者: MattDMo 全部

Sublime Text中最好的Python语言定义,至今。支持Unicode,同时支持Python 2和Python 3语法。查看 Neon颜色方案以获取高亮显示。

标签 语言语法

详细信息

安装

  • 总计 66K
  • Win 32K
  • Mac 16K
  • Linux 19K
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日 6月22日
Windows 4 0 3 2 1 4 7 6 6 3 2 0 3 3 3 2 1 2 3 3 1 2 1 6 2 6 5 3 4 1 0 3 4 4 2 1 3 4 0 2 8 8 7 4 1 1
Mac 0 1 0 1 2 1 1 1 2 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 2 1 0 0 2 0 0 0 0 0 0 1 2 0 1 0 0 0
Linux 0 1 3 0 0 1 0 0 1 1 1 0 1 0 1 5 6 0 2 1 0 3 7 1 0 2 2 1 2 0 1 1 1 1 0 0 0 0 0 1 1 1 1 2 1 0

README

源代码
raw.githubusercontent.com

GitHub release Donate via PayPal

Python改进版

为 Sublime Text 和 TextMate 提供更好的 Python .tmLanguage 语法高亮定义。它支持 Python 2 和 Python 3,而且与任何其他 Python 语法定义不同,它现在完全支持在任何地方使用 Unicode 标识符!它还提供了自己的改进的正则表达式语法定义,用于内部原始字符串字面值的高亮显示。

灵感来源于

  • 原始的 TextMate 和 Sublime Text Python.tmLanguage 文件
  • facelessuser 的 Better Python
  • Peter Varo 的 Python 3 语法定义

以及我为使事情更加一致和可理解所做的许多自己的更改。要使用 PythonImprovedNeon Color Scheme 获得所有新范围的定制语法高亮显示,请按照以下范围修改您的 favorite 颜色方案。

安装和用法

如果您尚未安装,请先 安装 Package Control,然后从命令面板中的 Package Control: Install Package 选项中选择 Python Improved。要将 PythonImproved 作为默认 Python 语法使用,打开一个 .py 文件,然后选择 查看 -> 语法 -> 将当前扩展名所有文件以...打开 -> PythonImproved

尽管我尚未尝试在 TextMate 中安装 PythonImproved,但我无法想出一个非常好的理由来说明为什么它不会工作。您可以尝试将其放入标准 Python.tmbundle 包的同一目录中,在 语法 子目录下。然后,只需从语法菜单中选择 PythonImproved

新/更改的范围

如果您喜欢修改自己的颜色方案,这里有一些新/更改的范围,还有一些示例。它并不完美完整,但这是一个开始。

  • 支持 support.ipython.insupport.ipython.out 字段:用于IPythonIn [1]:/Out [1]:,配合SublimeREPL 使用。单元编号可以通过 support.ipython.cell-number 进行不同颜色主题设置。
  • constant.numeric.integer.(long).binary.python:二进制字面量 0b001010100b00101010L
  • keyword.control.import.python 现在包含 importfrom以及 as
  • support.type.exception.python 现在匹配以 ExceptionError 结尾的任何标识符,而不仅仅是内建的如 IndentationErrorRuntimeException,允许突出显示第三方模块中的自定义异常。
  • 对 Python 3 的函数注解支持,归功于@facelessuser。新增了新的作用域:punctuation.separator.annotation.pythonpunctuation.separator.annotation.result.pythonpunctuation.definition.parameters-group.begin.pythonpunctuation.definition.parameters-group.end.python
  • 现在您可以在多行函数定义中添加注释
def myfunc(self,            # gotta have self
           param1="value",  # values are cool
           param2=True,     # or False, whatever
           *args,           # I'm here for an argument
           **kwargs):       # you never know

  • 新增了字节数组、unicode 和原始/正则表达式字符串的作用域,归功于@simonzackstring.quoted.(single|double).(block|single-line).(bytes|bytes-raw|bytes-raw-regex).python
  • 来自@simonzack的最新功能,参数字符串中的 self|cls 自动加亮:variable.parameter.function.(keyword|language)
  • comment.line.note.python 是包含开头为 (BUG|FIXME|TODO|XXX) 的注释行。comment.line.note.notation.python 匹配实际单词本身,因此您可以分别加亮单词和整行

  • constant.other.allcaps.python 捕获所有大写变量名(例如 OPENING_PORT),假设这些通常在代码中被视为常量。匹配 CONSTANTclass.CONSTANTCLASS.CONSTANTCONSTANT 部分,但不匹配 CLASS.function()class.FUNCTION()FUNCTION()
  • 修复了八进制整数,以匹配 Python 3 样式的 0o123 以及旧样式的 0123
  • 内建函数如 any()dict()len()raw_input() 等,现在与任何其他函数一样突出显示其参数。多谢 @facelessuser 提供正则表达式,以及 @FichteFoll 的宝贵讨论。对于使用 Python 2 进行工作的人,print 仍然是一个独立的关键字(同样还有 assertdel)。
  • support.function.magicsupport.function.builtin 现已拆分为两个部分——namecall,例如 __init__(《support.function.magic.name.python》),可以与__init__()(《support.function.magic.call.python》)的不同主题进行不同设置。
  • 相关地,也将魔法函数名称(和调用),也称为“双下划线”方法汇总从2.73.5 数据模型文档中,并清理,尽可能包含其中,但排除了过时或错误的内容。同样适用于魔法变量(《support.variable.magic》)。
  • support.type 现在仅包含定义在 https://docs.pythonlang.cn/X/library/functions.html 和 stdtypes.html (其中 X23)中的内容,其中项是一个类。它们仅在被开括号跟随时加亮为此类(例如 support.function.builtin.call)。这解决了#16
  • 定义的转义字符(如 \n \'() \\ 等)现在被单独命名为 constant.character.escape.*,其中 *newlinesingle-quotebackslash 等。
  • 以及我可能忘记的一些其他内容...

备注:

  • 为方便攻克代码,我还将在仓库中包含我的.YAML-tmLanguage文件,这是我日常工作中使用的(我真的很讨厌在XML中嵌入正则表达式调试)。安装PackageDevPackageDev用于语法高亮,并提供了在YAML、JSON和XML/Plist格式之间转换的工具。《Neon》当然为.YAML-tmLanguage格式提供了出色的配色,特别是正则表达式的配色!:)
  • 说到这个,对于原始/正则表达式字符串,正则表达式的范围将根据随附的正则表达式(Python增强版).tmLanguage文件而定,而不是使用内建的Python正则表达式定义。如果你使用Neon进行语法高亮(或任何突出显示正则表达式的配色方案),请使用小写字母r来表示你的字符串包含正则表达式(例如,r"\b(?i:(0[o]?[0-7]+))")。但是,如果你只是使用原始字符串字面量,例如定义Windows路径,并且不希望所有反斜杠等都被突出显示正则表达式的话,请使用大写字母R(例如,R"C:\Users\MattDMo")。Python无法区分,但它在编辑器中看起来会更美观。
  • 所有与Django相关的功能都已移除。如果你想要恢复,只需浏览仓库的历史,你就可以找到它。它只是太过分心。
  • 我已经从字符串定义中移除了与SQL相关的功能,因为1)有人提出了意见,2)和Django一样,它太分心了。它并没有涵盖所有的SQL,只是突出了一些关键字,根本不值得。
  • Unicode转义现在应会在所有字符串中正确出现,因为Python 3中所有字符串都是Unicode。我觉得我做到了,如果你有不同的看法,请告诉我。
  • 我已经开始对新的字符串格式化迷你语言的各种元素进行正确的突出显示,但我还没有在解决个别问题时将其应用于最近的版本。请随意加入讨论
  • 现在,随着ST3公开测试版本支持.sublime-syntax文件,我将开始将PI转换为该格式。如果你想贡献力量,请在这个问题上发表意见。一个主要优势将是修复这个错误有关原始字符串字面量的。

问题

如果你有任何疑问、担忧或建议的改进,我非常乐意听到你的意见!请随意创建一个问题或发送一个拉取请求,我会尽快回复你。你也可以通过[email protected]给我发送电子邮件,或者在Twitter上找到我@MattDMo

许可协议

© 2013-2022 Matt Morrison [email protected]

这是一款免费软件。它受到MIT许可证的许可。你有权在你的工作中使用它。但是,如果你修改和/或重新分配它,请以某种方式注明我,如果你愿意以本协议或类似协议发布你的作品那就更棒了,但不强制要求。一个喝彩或者一杯啤酒我都会感激不尽。

支持

PayPal - The safer, easier way to pay online!