【问题标题】:How to sort using statement of C# code in vim?如何在vim中使用C#代码的语句进行排序?
【发布时间】:2009-12-09 10:09:07
【问题描述】:

最近我在 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;

如何实现?

【问题讨论】:

    标签: c# vim stylecop


    【解决方案1】:

    :h :sort是你的朋友:

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

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

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

    (如果在 ';' 之后有不同的 cmets,这将没有任何好处)

    【讨论】:

    • 谢谢。为了使它更好,我们可以删除重复的 using 语句: :[range]sort ur /[^;]*/
    【解决方案2】:
    :1,4s/;$//
    :sort
    :1,4s/$/;/
    

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

    【讨论】:

    • 这是一个解决方案,尽管需要大量输入:)
    • 试试这个(选择你的 using 语句并按 F5): :map :s/;/ /ggv:sortgv:s/ /;/g
    【解决方案3】:

    不使用 CodeRush 或 ReSharper 是在偷你的雇主

    <ducks for downvotes>

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

    【讨论】:

    • @Konamiman:不,但如果我出于某种原因觉得我必须使用 vim,我会掏出 VS 来获得其中任何一个
    • 有很多微软员工使用 VIM 而不是像我这样的 VS:)
    • @Morgan:我知道——只有拉链。 (虽然我发现很难想象自己在一个平行宇宙中,用一种抓住它的脚踝让你使用重构工具然后故意忽略它的语言进行编码。)是的,我知道 VS 很难被描述为可编写脚本编辑。也许阅读 Clean Code、APPP、Refactoring 和使用 xunit.net 和 CR 已经扭曲了我的世界观太多了:P
    【解决方案4】:

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

    :1,4!sort
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 2014-10-23
      • 2021-12-26
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多