Как сортировать с помощью оператора кода C# в vim?


Недавно я редактировал код C# в vim. А в системе сборки включен StyleCop, так что все, использующие оператор , должны располагаться в алфавитном порядке.

Итак, я попытался выбрать нижеприведенные строки кода в визуальном режиме, затем введите ": 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, потому что " система.Безопасность "не опережает" систему.Безопасность.Разрешения". Значение ASCII"; " больше, чем значение ASCII ".".

Предпочтительный результат это:

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

Как этого добиться?

4 5

4 ответа:

:h :sort Ваш друг:

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

Если по пути вы хотите удалить дубликаты, добавьте флагu niq:

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

(это не принесет никакой пользы, если у вас есть разные комментарии после"; " хотя)

:1,4s/;$//
:sort
:1,4s/$/;/

(где 1,4-строки с операторами using)

Не использовать CodeRush или ReSharper-это кража у вашего работодателя

<ducks for downvotes>

(Да, я знаю, что требуется VS (и AFAIK VS10 имеет этот OOTB))

На моем Linux box с локальным, отличным от C (проверено fr_FR, fr_FR.UTF-8, en_US, en_GB), команда сортировки сортирует, как вы ожидаете. Вы можете очень хорошо передать команду сортировки:

:1,4!sort

Если вы работаете в windows, я полагаю, что вы можете установить инструменты unix (например, SFU), которые могли бы выполнить эту работу, поскольку команда сортировки vim, похоже, не обрабатывает языковой стандарт.