ST3 的排序不支持中文按拼音排序,所以需要搞一个插件来支持这一特性

pypinyin 这个库可以把中文转成拼音,可惜不支持 python3.3,而 ST3 内置的 python 就是 3.3

我系统中的 python 是 3.8,是可以用 pypinyin 这个库的

那么问题可以转化为「python3.3 如何调用 python3.8 的排序函数」,Interesting!

于是

class RPC(object):
cmd = """
import json, sys
from pypinyin import lazy_pinyin arg = json.loads(sys.argv[1])
func, args, kwargs = arg["func_name"], arg["func_args"], arg["func_kwargs"] def chinese_sort(lst):
lst.sort(key=lambda x: "".join(lazy_pinyin(x)), reverse=False) # 从小到大
print(json.dumps(lst)) eval(f"{func}(*args, **kwargs)") # hangj.cnblogs.com
"""
def __getattr__(self, func_name):
def _func(*args, **kwargs):
d = {'func_name': func_name, 'func_args': args, 'func_kwargs': kwargs, 'author': 'hangj.cnblogs.com'}
arg = json.dumps(d)
res = os.popen('''python3.8 -c '{}' '{}' '''.format(cmd, arg)).read()
return json.loads(res) setattr(self, func_name, _func)
return _func # author: hangj.cnblogs.com
class SortChineseCommand(sublime_plugin.TextCommand):
def sort(self, edit):
lines = []
for selection in self.view.sel():
if not selection: continue
lines.append(self.view.substr(selection)) if len(lines) < 2: return rpc = RPC()
lines = rpc.chinese_sort(lines) i = 0
for selection in self.view.sel():
self.view.erase(edit, selection)
self.view.insert(edit, selection.begin(), lines[i])
i = i + 1 def run(self, edit, sortbylines=True):
if sortbylines:
self.view.run_command('select_every_single_line') self.sort(edit)

快捷键设置

[
{ "keys": ["alt+f5"], "command": "sort_chinese", "args":{"sortbylines":true}},
{ "keys": ["alt+shift+f5"], "command": "sort_chinese", "args":{"sortbylines":false}},
]

按行排序,或按你选中的文字块来排序

have fun!

sublime text 3 中文排序插件的更多相关文章

  1. Sublime Text 3 中文汉化绿色破解特别版下载

    Sublime Text是一款代码编辑器,几乎支持所有语言的编写.sublime给人们的印象不外乎小巧.速度快.并且快捷键丰富而强大.不知繁多的插件. sublime一般被应用到前端的开发.Subli ...

  2. Sublime Text 3中文乱码问题的解决(最有效)

    Sublime Text 3中文乱码问题的解决(最有效) Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开 ...

  3. Sublime Text 3 中文乱码的解决方法

    Sublime Text 3 中文乱码表现如下图: 解决方法很简单,三步搞定: 步骤一: 下载ConvertToUTF8,下载地址:http://pan.baidu.com/s/1gd5SWmB 步骤 ...

  4. 2分钟 windows下sublime text 3安装git插件:

    12:35 2015/11/182分钟 windows下sublime text 3安装git插件:推荐博客:http://blog.csdn.net/naola2001/article/detail ...

  5. 10秒钟sublime text 3安装SVN插件

    注意:此处我提前已经安装了towerSVN,你可能需要提前安装好 towerSVN,之前安装redis之后我才明白,安装插件时安装软件好像 是一个必要的步骤,也就是说安装插件只是让你能在这里使用你已 ...

  6. Sublime Text 中使用Git插件连接GitHub

    sublime Text的另一个强大之处在于它提供了非常丰富的插件,可以帮助程序员来适合大多数语言的开发.这些插件通过它自己的Package Controll(包管理)组件来安装,非常方便.一般常用的 ...

  7. 给Sublime Text 2安装CTags插件

    以Windows操作系统为例介绍安装过程: 安装ctags应用程序. 到CTags的官方网站下载最新版本,解压后将ctags.exe文件放到系统的搜索路径中. 安装Sublime Text 2的Pac ...

  8. 解决Sublime Text 3中文显示乱码问题

    之前用Sublime Text 2,阅读了你是猴子派的救兵吗写的博客解决Sublime Text 2中文显示乱码问题,解决了问题. 后来嫌版本2启动太慢了,换成Sublime Text 3之后,发现网 ...

  9. 解决Sublime Text 3中文显示乱码问题(转)

    解决Sublime Text 3中文显示乱码问题(转) 1.打开Sublime Text 3,按Ctrl+-打开控制行,复制粘贴以下python代码,然后回车运行. 2. 复制并粘贴如下代码: 2.重 ...

随机推荐

  1. 构建前端第5篇之---修改css样式的思路

    张艳涛写于2020-1-20 在页面元素布局的时候,在知道应该如何设置元素的属性的时候,可以依照如下思路,使用chrome浏览器,打开f12,找到对应的最近元素,看右侧对于的css样式窗口,调整修改数 ...

  2. maven之---资源过滤 在java/main/resourse/*.xml ,*.properties引用maven属性${db.username}

    本文主要来源maven实战14.3 为了应对环境的变化,首先使用Maven属性将这个会发生变化的部分提取出来.在上一节的数据库配置中,连接数据库使用的驱动类,URL,用户名和密码都可能发生变化,因此使 ...

  3. Java面向对象07——封装

    封装 (补充 this关键字):  package oop.demon01.demon03; ​ /*    封装的意义:        1. 提高程序的安全性,保护代码        2. 隐藏代码 ...

  4. 有赞Android实习五面都挂了,复习半月再战,转拿腾讯offer!

    缘起 为了有赞的面试准备了半个月的样子,当时还投了美团.字节.滴滴.京东,目的只有一个,就是要进大厂,但是只有有赞扛过了一面,其他都是一面就挂了. 前三面都自我感觉良好,以为能稳拿offer的,没想到 ...

  5. 程序员被老板要求两个月做个APP,要不比京东差,网友:做一个快捷方式,直接链到京东

    隔行如隔山,这句话说得一点都没错.做一个程序员,很多人都会羡慕,也有很多人会望而却步. 作为一个外行人,你别看程序员每天坐在电脑前敲敲键盘打打代码,以为很简单,其实啊也只有程序员自己明白,任何一个看似 ...

  6. RabbitMQ入门案例

    RabbitMQ入门案例 Rabbit 模式 https://www.rabbitmq.com/getstarted.html 实现步骤 构建一个 maven工程 导入 rabbitmq的依赖 启动 ...

  7. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

  8. spring-session-data-redis反序列化问题

    springCloud项目,采用springSession,用户模块同时引入了spring-cloud-starter-security,在其他模块request.getSession()的时候抛了以 ...

  9. Golang语言系列-04-运算符

    运算符 Go语言内置的运算符有 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 package main import "fmt" func main() { ...

  10. HCNA Routing&Switching之地址转换技术NAT

    前文我们了解了包过滤工具ACL相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15156308.html:今天我们来聊一聊地址转换技术NAT相关话题: ...