Python改进版
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
Python改进版
为 Sublime Text 和 TextMate 提供更好的 Python .tmLanguage
语法高亮定义。它支持 Python 2 和 Python 3,而且与任何其他 Python 语法定义不同,它现在完全支持在任何地方使用 Unicode 标识符!它还提供了自己的改进的正则表达式语法定义,用于内部原始字符串字面值的高亮显示。
灵感来源于
- 原始的 TextMate 和 Sublime Text
Python.tmLanguage
文件 - facelessuser 的 Better Python
- Peter Varo 的 Python 3 语法定义
以及我为使事情更加一致和可理解所做的许多自己的更改。要使用 PythonImproved 和 Neon Color Scheme 获得所有新范围的定制语法高亮显示,请按照以下范围修改您的 favorite 颜色方案。
安装和用法
如果您尚未安装,请先 安装 Package Control,然后从命令面板中的 Package Control: Install Package
选项中选择 Python Improved
。要将 PythonImproved 作为默认 Python 语法使用,打开一个 .py
文件,然后选择 查看 -> 语法 -> 将当前扩展名所有文件以...打开 -> PythonImproved
。
尽管我尚未尝试在 TextMate 中安装 PythonImproved,但我无法想出一个非常好的理由来说明为什么它不会工作。您可以尝试将其放入标准 Python.tmbundle
包的同一目录中,在 语法
子目录下。然后,只需从语法菜单中选择 PythonImproved
。
新/更改的范围
如果您喜欢修改自己的颜色方案,这里有一些新/更改的范围,还有一些示例。它并不完美完整,但这是一个开始。
- 支持
support.ipython.in
和support.ipython.out
字段:用于IPython 的In [1]:
/Out [1]:
,配合SublimeREPL 使用。单元编号可以通过support.ipython.cell-number
进行不同颜色主题设置。 constant.numeric.integer.(long).binary.python
:二进制字面量0b00101010
,0b00101010L
keyword.control.import.python
现在包含import
,from
和 以及as
support.type.exception.python
现在匹配以Exception
或Error
结尾的任何标识符,而不仅仅是内建的如IndentationError
或RuntimeException
,允许突出显示第三方模块中的自定义异常。- 对 Python 3 的函数注解支持,归功于@facelessuser。新增了新的作用域:
punctuation.separator.annotation.python
,punctuation.separator.annotation.result.python
,punctuation.definition.parameters-group.begin.python
和punctuation.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 和原始/正则表达式字符串的作用域,归功于@simonzack:
string.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
),假设这些通常在代码中被视为常量。匹配CONSTANT
,class.CONSTANT
和CLASS.CONSTANT
的CONSTANT
部分,但不匹配CLASS.function()
,class.FUNCTION()
或FUNCTION()
。- 修复了八进制整数,以匹配 Python 3 样式的
0o123
以及旧样式的0123
- 内建函数如
any()
,dict()
,len()
,raw_input()
等,现在与任何其他函数一样突出显示其参数。多谢 @facelessuser 提供正则表达式,以及 @FichteFoll 的宝贵讨论。对于使用 Python 2 进行工作的人,print
仍然是一个独立的关键字(同样还有assert
和del
)。 support.function.magic
和support.function.builtin
现已拆分为两个部分——name
和call
,例如__init__
(《support.function.magic.name.python
》),可以与__init__()
(《support.function.magic.call.python
》)的不同主题进行不同设置。- 相关地,也将魔法函数名称(和调用),也称为“双下划线”方法汇总从2.7 和 3.5 数据模型文档中,并清理,尽可能包含其中,但排除了过时或错误的内容。同样适用于魔法变量(《
support.variable.magic
》)。 support.type
现在仅包含定义在 https://docs.pythonlang.cn/X/library/functions.html 和 stdtypes.html (其中X
为2
或3
)中的内容,其中项是一个类。它们仅在被开括号跟随时加亮为此类(例如support.function.builtin.call
)。这解决了#16。- 定义的转义字符(如
\n
\'()
\\
等)现在被单独命名为constant.character.escape.*
,其中*
是newline
,single-quote
,backslash
等。 - 以及我可能忘记的一些其他内容...
备注:
- 为方便攻克代码,我还将在仓库中包含我的
.YAML-tmLanguage
文件,这是我日常工作中使用的(我真的很讨厌在XML中嵌入正则表达式调试)。安装PackageDev
PackageDev
用于语法高亮,并提供了在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许可证的许可。你有权在你的工作中使用它。但是,如果你修改和/或重新分配它,请以某种方式注明我,如果你愿意以本协议或类似协议发布你的作品那就更棒了,但不强制要求。一个喝彩或者一杯啤酒我都会感激不尽。