Sublimetext3 在SublimiteText3中配置排序顺序
我知道如何在Sublime中对行进行排序(ctrl+p“排序”)。问题是它没有按照我的要求对一些字符进行排序,即åäö 有没有办法改变升华对文本的排序方式?也许是特定的地区?能够将V和W排序为相等也是很有趣的 示例:我希望以下单词按此顺序排序:Sublimetext3 在SublimiteText3中配置排序顺序,sublimetext3,Sublimetext3,我知道如何在Sublime中对行进行排序(ctrl+p“排序”)。问题是它没有按照我的要求对一些字符进行排序,即åäö 有没有办法改变升华对文本的排序方式?也许是特定的地区?能够将V和W排序为相等也是很有趣的 示例:我希望以下单词按此顺序排序: bår bär bör 但升华是这样分类的: bär bår bör ST的问题跟踪器上记录了类似的请求: 其中一位ST开发者回答说: Python3中的排序使用Unicode代码点作为排序的基础。升华文本不知道您的编码代表什么语言,因此它不使用基于
bår
bär
bör
但升华是这样分类的:
bär
bår
bör
ST的问题跟踪器上记录了类似的请求: 其中一位ST开发者回答说: Python3中的排序使用Unicode代码点作为排序的基础。升华文本不知道您的编码代表什么语言,因此它不使用基于区域设置的排序规则 这似乎最好由一个专门提供基于区域设置的排序规则的包来解决 使用,我们可以看到
Packages/Default/sort.py
中的case\u-sensitive\u-sort
方法使用Python内置的list.sort
方法。在ST的Python控制台(查看菜单->显示控制台)中键入以下内容,我们会得到与您所示相同的结果:
>>> a = ['bår', 'bär', 'bör']
>>> a.sort()
>>> a
['bär', 'bår', 'bör']
因此,答案是没有配置排序行为的设置,将来也不可能有。但是,根据,可以使用locale.strxfrm
作为键函数使用区域设置感知排序
让我们试试看。在Windows上,我必须使用
>>> import locale
>>> locale.setlocale(locale.LC_COLLATE, 'sve')
'Swedish_Sweden.1252'
要使Python使用瑞典语言环境,请按照
利用这些知识,您可以选择更改区分大小写的排序方法,以便ST的内置排序功能(编辑菜单->排序行(区分大小写))使用区域设置的排序键。请注意,保存从PackageResourceViewer打开的sort.py
文件将创建一个覆盖,因此,如果ST的未来版本包含对sort.py
的更改,则在删除覆盖之前,您不会看到这些更改(您可以通过使用“首选项”菜单->浏览软件包->默认设置来查找文件。如果合适,您可以在以后使用完全相同的步骤重新应用更改。)
您还可以将不区分大小写\u排序方法更改为
txt.sort(key=lambda x: x.lower())
到
请注意,如果没有自动选择正确的语言环境(它可能默认为C
)
在某些库例程中调用setlocale()
通常不是一个好主意,因为它会产生副作用,影响整个程序。保存和还原它几乎同样糟糕:代价高昂,并且会影响在还原设置之前运行的其他线程
您可以将以下内容添加到sort.py
文件的末尾:
def plugin_loaded():
import locale
locale.setlocale(locale.LC_COLLATE, '')
这将在加载插件时,允许Python根据您的LANG
env变量推断语言环境。优点是您只设置了一次,希望不会给同时执行的其他插件代码带来任何问题
快乐排序!ST的问题跟踪器上记录了类似的请求:
其中一位ST开发者回答说:
Python3中的排序使用Unicode代码点作为排序的基础。升华文本不知道编码所代表的语言,因此它不使用基于区域设置的排序规则
这似乎最好由一个专门提供基于区域设置的排序规则的包来解决
使用,我们可以看到Packages/Default/sort.py
中的case\u-sensitive\u-sort
方法使用Python内置的list.sort
方法。在ST的Python控制台(View menu->Show console)中键入以下内容,我们会得到与您所示相同的结果:
>>> a = ['bår', 'bär', 'bör']
>>> a.sort()
>>> a
['bär', 'bår', 'bör']
因此,答案是没有配置排序行为的设置,将来也不可能有。但是,根据,可以使用locale.strxfrm
使用区域设置感知排序作为关键函数
让我们试试。在Windows上,我必须使用
>>> import locale
>>> locale.setlocale(locale.LC_COLLATE, 'sve')
'Swedish_Sweden.1252'
要使Python使用瑞典语言环境,请按照
利用这些知识,您可以选择更改区分大小写的排序方法
以便ST内置的排序功能(编辑菜单->排序行(区分大小写))将使用区域设置感知排序键。请注意,保存从PackageResourceViewer打开的sort.py
文件将创建一个覆盖,这样,如果ST的未来版本包含对sort.py
的更改,则在删除覆盖之前,您将看不到这些更改(您可以通过使用“首选项”菜单->浏览软件包->默认设置来查找文件。如果合适,您可以在以后使用完全相同的步骤重新应用更改。)
您还可以将不区分大小写\u排序方法更改为
txt.sort(key=lambda x: x.lower())
到
请注意,如果没有自动选择正确的语言环境(它可能默认为C
)
在某些库例程中调用setlocale()
通常不是一个好主意,因为它会产生副作用,影响整个程序。保存和还原它几乎同样糟糕:代价高昂,并且会影响在还原设置之前运行的其他线程
您可以将以下内容添加到sort.py
文件的末尾:
def plugin_loaded():
import locale
locale.setlocale(locale.LC_COLLATE, '')
这将在加载插件时,允许Python根据您的LANG
env变量推断语言环境。优点是您只设置了一次,希望不会给同时执行的其他插件代码带来任何问题
分类快乐