5

最近我在 vim 中编辑 C# 代码。并且构建系统启用了 StyleCop,因此所有using语句都应按字母顺序排列。

所以,我尝试在可视模式下选择下面的代码行,然后输入“:sort”。

using System.Security.Permissions;
using System.Runtime.Serialization;
using System.Security;
using System.ServiceModel;

结果是:

using System.Runtime.Serialization;
using System.Security.Permissions;
using System.Security;
using System.ServiceModel;

它没有通过 StyleCop 检查,因为“System.Security”不在“System.Security.Permissions”之前。";" 的 ASCII 值 大于“.”的 ASCII 值。

首选结果是:

using System.Runtime.Serialization;
using System.Security;
using System.Security.Permissions;
using System.ServiceModel;

如何实现?

4

4 回答 4

7

:h :sort是你的朋友:

:[range]sort r /[^;]*/

如果您希望删除重复项,请添加u niq 标志:

:[range]sort ur /[^;]*/

(如果你在';'之后有不同的评论,这不会有任何好处)

于 2009-12-09T12:52:37.280 回答
1
:1,4s/;$//
:sort
:1,4s/$/;/

(其中 1,4 是带有 using 语句的行)

于 2009-12-09T10:16:55.613 回答
0

不使用 CodeRush 或 ReSharper 是从你的雇主那里偷东西

<ducks for downvotes>

(是的,我知道这需要 VS(并且 AFAIK VS10 有这个 OOTB))

于 2009-12-09T10:15:31.637 回答
0

在我的 linux 机器上,本地不是 C(测试 fr_FR、fr_FR.UTF-8、en_US、en_GB),sort 命令按您期望的方式排序。您可以很好地使用排序命令:

:1,4!sort

如果您在 Windows 上,我想您可以安装可以完成这项工作的 unix 工具(如 SFU),因为 vim 的排序命令似乎无法处理语言环境。

于 2009-12-09T11:58:53.670 回答