Как исправить несовместимые окончания строки для всего решения VS? - PullRequest
42 голосов
/ 15 февраля 2012

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

Ответы [ 5 ]

24 голосов
/ 04 марта 2016

Просто для более полного ответа, это лучше всего сработало для меня:

Заменить

(?<!\r)\n

с

\r\n

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

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

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

9 голосов
/ 13 ноября 2014

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

([^\r]|^)\n

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

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

$1\r\n

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

7 голосов
/ 28 января 2013

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

Edit > Advanced > Format Document

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

1 голос
/ 07 ноября 2015

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


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

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

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

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

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

([^\r]|^)\n

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

\r\n

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

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

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

И этоВот и все!

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

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

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

0 голосов
/ 13 октября 2017

Если у вас есть 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.

...