如何在Vim中对UTF-8线进行排序?
我在Vim中有以下几行代码:如何在Vim中对UTF-8线进行排序?,vim,unicode,utf-8,Vim,Unicode,Utf 8,我在Vim中有以下几行代码: a c b e é f g 当我进行:%sort时,我得到以下结果: a b c e f g é 显然,“é”行不应该在末尾,它应该在“e”行之后。是否可以让Vim对这些线进行正确排序?不为字符使用ASCCI键,而是实际字符 我还尝试了:!排序(使用GNU排序实用程序),但我得到了相同的结果。我使用得到以下结果:%!排序: a b c e é f g 这就是应该发生的事情。似乎是你的区域设置造成的。我不确定到底出了什么问题,但是FWIW,我有以下环境设置:LA
a
c
b
e
é
f
g
当我进行:%sort
时,我得到以下结果:
a
b
c
e
f
g
é
显然,“é”行不应该在末尾,它应该在“e”行之后。是否可以让Vim对这些线进行正确排序?不为字符使用ASCCI键,而是实际字符
我还尝试了
:!排序
(使用GNU排序
实用程序),但我得到了相同的结果。我使用得到以下结果:%!排序
:
a
b
c
e
é
f
g
这就是应该发生的事情。似乎是你的区域设置造成的。我不确定到底出了什么问题,但是FWIW,我有以下环境设置:
LANG=en_GB.UTF-8
:%sort
和:%!排序
的工作方式不一定相同。引用:帮助排序:
a
b
c
e
é
f
g
有关排序的详细信息取决于
使用的库函数。有
不保证分拣“稳定”
或遵守当前区域设置。你会
我必须试一试
另一方面,GNU排序根据当前区域设置进行排序。引用人工分拣:
a
b
c
e
é
f
g
*警告*环境指定的区域设置会影响
排序顺序。设置LC_ALL=C以获取使用
本机字节值
在我的系统上(暂时设置了fr_CA.UTF-8的Ubuntu9.10):%sort
排序就像设置了C
或POSIX
一样,而:%!排序
根据法语地区进行排序
我猜您最初尝试了:%sort
和:%!在类似POSIX的区域设置下进行排序(产生相同的结果),然后仅使用:%sort
(始终返回类似POSIX的顺序)在不同区域设置下继续实验。你能确认一下吗?这里也一样。我在Ubuntu 9.04上使用了sort
6.10。这很奇怪,我有LANG=fr\u CA.UTF-8
和LC\u ALL=fr\u CA.UTF-8
。这并不像你想象的那么明显。确切的顺序在很大程度上取决于区域设置。我猜你用的地方不是你想用的地方。在您的系统上,locale
命令打印的是什么?感谢:%sort
和:%之间的澄清!按区域设置排序
。然而,即使将LC\u ALL
设置为fr\u CA.UTF-8
,:%!sort
命令仍然错误地对行进行排序。问题可能与Vim无关,因为在常规终端中对文件运行sort
,也无法正常工作。我在Mac电脑上,所以这可能是问题所在。我会调查的,真奇怪。。。您是对的,最好首先关注GNU排序,因为问题看起来并不特定于vim。我现在没有Mac电脑,所以我帮不了你,但我发现:也许这场讨论在某种程度上是相关的。祝你好运