Sublimetext3 在SublimiteText3中配置排序顺序

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代码点作为排序的基础。升华文本不知道您的编码代表什么语言,因此它不使用基于

我知道如何在Sublime中对行进行排序(ctrl+p“排序”)。问题是它没有按照我的要求对一些字符进行排序,即åäö

有没有办法改变升华对文本的排序方式?也许是特定的地区?能够将V和W排序为相等也是很有趣的

示例:我希望以下单词按此顺序排序:

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变量推断语言环境。优点是您只设置了一次,希望不会给同时执行的其他插件代码带来任何问题

分类快乐