如何在Vim中实现每行内部字符排序而非整行排序?
在Vim中实现每行内部字符排序的方法
完全可以通过Vim本身实现每行内部字符的排序,不需要额外编写Python脚本。以下是具体的实现方案:
按忽略大小写的字母顺序排序(匹配示例需求)
执行以下全局替换命令:
:%s/.*/\=join(sort(split(submatch(0), ''), 'i'), '')/
命令拆解:
:%s:对所有行执行替换操作.*:匹配当前行的全部内容\=...:通过Vim表达式计算替换后的内容split(submatch(0), ''):将整行内容拆分为单个字符的列表sort(..., 'i'):对字符列表做忽略大小写的排序,按字母字典序排列,同时保留原字符的大小写格式join(..., ''):将排序后的字符列表重新拼接成字符串
执行该命令后,示例输入:
Each
Ate
Ana
会被处理为:
acEh
Aet
aAn
按ASCII码排序(区分大小写)
如果需要严格按字符的ASCII码值排序(大写字母默认排在小写字母前),可以去掉sort函数的'i'参数:
:%s/.*/\=join(sort(split(submatch(0), '')), '')/
内容的提问来源于stack exchange,提问作者Aram Papazian
相关产品推荐
相关产品推荐

