2009-12-09 5 views
5

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

Итак, я попытался выбрать под строками кода в визуальном режиме, затем введите «: 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; 

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

ответ

7

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

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

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

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

(Это не будет делать ничего хорошего, если у вас есть разные комментарии после ';' хотя)

+0

Спасибо. Чтобы сделать это лучше, мы можем удалить дубликаты с помощью операторов: : [range] sort ur/[^;] */ –

+0

Конечно, мы можем. Я редактирую ответ. –

0

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

<ducks for downvotes>

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

+0

Доступны ли CodeRush и ReSharper для vim? Wow ... – Konamiman

+0

@ Konamiman: Нет, но если я почему-то почувствовал, что мне пришлось использовать vim, я бы выложил VS для получения любого из них. –

+0

. В VIM работает много микрософтей, а не VS, как я :) –

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

(где 1 , 4 - строки с использованием инструкций)

+0

Это решение, хотя требуется много набрав :) –

+1

Попробуйте этот вариант (выберите свои операторы использования и нажмите F5): : map : s/;// g gv: sort gv: s//;/g Habi

0

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

:1,4!sort 

Если вы на окнах, я полагаю, вы можете установить средства Unix (например, СФ), которые могли бы сделать эту работу, так как команды сортировок Vim, как представляется, не обрабатывать локаль ,

+0

Windows имеет команду сортировки. –