Подтвердить что ты не робот

Как исправить непоследовательные окончания строк для решения VS?

Visual Studio обнаружит несогласованные окончания строк при открытии файла, и есть возможность исправить его для этого конкретного файла. Однако, если я хочу исправить окончания строк для всех файлов в решении, как это сделать?

4b9b3361

Ответ 1

Только для более полного ответа это лучше всего для меня:

Заменить

(?<!\r)\n

с

\r\n

во всем решении с опцией "regEx".

Это приведет к тому, что правильная строка будет завершена во всех файлах, которые до сих пор не имели правильной строки. Он использует отрицательный lookahead для проверки не-существования an\r перед \n.

Будьте осторожны с другими решениями: они либо изменят все строки во всех файлах (игнорируя исходную строку), либо удалите последний символ каждой строки.

Ответ 2

Вы можете использовать команду "Заменить в файлах" и включить регулярные выражения. Например, для замены концевых строк, которые имеют один вывод строки "\n" (например, из GitHub, например) со стандартным линией возврата каретки Windows "\ r\n" , выполните поиск:

([^\r]|^)\n

Это говорит о создании группы (для чего нужны скобки), где первый символ либо не является возвратом каретки, либо является началом строки. Начало теста линии действительно только для самого начала файла, если это начинается с "\n" . Следуя за группой, это новая строка. Таким образом, вы будете соответствовать ";\n", который имеет неправильный конец строки, но не "\ r\n" , который является правильным концом строки.

И замените его на:

$1\r\n

Это говорит о том, чтобы сохранить группу ($ 1), а затем заменить "\n" на "\ r\n" .

Ответ 3

Попробуйте сделать

Edit > Advanced > Format Document

Затем сохраните документ, если файл не будет изменен другим внешним редактором, он должен оставаться последовательным. Исправляет это для меня.

Ответ 4

Обновление: будьте осторожны. Не делайте этого, если вы полностью не привязаны к вашему репозиторию кода, и вы можете откатить любые непреднамеренные изменения. Читайте комментарии ниже. Вещи, которые работали для меня, могли бы не сработать для вас.


Ответ Рона был очень близок к тому, чтобы помочь мне, но мне пришлось внести некоторые изменения, чтобы заставить его работать в Visual Studio.

1) откройте решение, которое вы хотите исправить.

2) убедитесь, что все ожидающие изменения отмечены, потому что вы потенциально собираетесь редактировать хрупкий документ и не хотите отменить другие ваши ожидающие изменения.

3) в любом документе нажмите Ctrl + F, чтобы открыть окно поиска, и щелкните значок со стрелкой вниз с левой стороны, чтобы развернуть его в поле поиска/замены.

4) В верхней строке вставьте:

([^\r]|^)\n

В нижней строке вставьте:

\r\n

5) Вставьте значок .* в функцию "Использовать регулярные выражения".

6) Измените раскрывающийся список рядом с этим значком, чтобы он произносил "Полное решение" или "Все открытые документы" или все, что подходит для вашей ситуации.

7) Нажмите кнопку "Заменить все", которая показывает значок ab -> ac в значке.

И что это!

В стороне, мне это нужно, потому что шаблоны Unity script все сделаны в MonoDevelop, поэтому они имеют окончание строк Mac по умолчанию. Мне пришлось редактировать все документы в пути:

C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates

Итак, я открыл их все в Visual Studio, выполнил описанный выше процесс, используя "Все открытые документы" на шаге 6.

Ответ 5

Если у вас есть Cygwin с установленным пакетом cygutils, вы можете использовать эту цепочку команд из оболочки Cygwin:

unix2dos -idu *. cpp | sed -e 's/0 [1-9] [0-9]//' -e 's/[1-9] [0-9] * 0//' | sed '/[1-9] [0-9]/! d' | sed -e 's/[1-9] [0-9]//' | xargs unix2dos

(Замените *.cpp на любой шаблон, который вам нужен)

Чтобы понять, как это работает, команда unix2dos используется для преобразования файлов, но необходимо преобразовать только файлы, имеющие непоследовательные окончания строк (т.е. смесь UNIX и DOS). Параметр -idu отображает количество окончаний строк dos и unix в файле. Например:

   0     491  Acad2S5kDim.cpp
 689       0  Acad2S5kPolyline.cpp
   0     120  Acad2S5kRaster.cpp
 433      12  Acad2S5kXhat.cpp
   0     115  AppAuditInfo.cpp

Здесь необходимо преобразовать только файл Acad2S5kXhat.cpp. Команда sed фильтрует выход, чтобы создать список только файлов, которые необходимо преобразовать, и затем они обрабатываются через xargs.