Visual Studio обнаружит несогласованные окончания строк при открытии файла, и есть возможность исправить его для этого конкретного файла. Однако, если я хочу исправить окончания строк для всех файлов в решении, как это сделать?
Как исправить непоследовательные окончания строк для решения VS?
Ответ 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.