Cr lf notepad заменить

Обновлено: 02.07.2024

Иногда бывает такая ситуация – получаешь от заказчика движок для его дальнейшего «допиливания». Пытаешься положить его в репозиторий Git – и получаешь кучу варнингов типа:

Это понятно - файлы в исходнике писались/правились до меня разными людьми и на разных операционных системах. Поэтому в файлах наблюдается полная мешанина в вопросе формата окончания строк.

Небольшая справка для тех, кто не в курсе. В разных операционных системах принят разный формат символов, обозначающий перевод строк:

  • Windows - \r\n или CRLF (код 0D0A)
  • Unix - \n или LF (код 0A)
  • Mac - \r или CR (код 0D).

Такую разносортицу в своем проекте мне держать не хочется, поэтому я предпочитаю перед началом работ приводить все окончания строк к единому виду - \n, он же LF. Почему так? Большинство серверов работают под управлением систем на базе Unix, поэтому, на мой взгляд, логично использовать nix’овые окончания строк и для файлов движка сайта.

Теперь опишу свой способ приведения конца строк к единому виду. Описывать работу буду на примере графической оболочки Git – Git GUI. Так проще и нагляднее.

  1. Кладу все файлы движка в папку – например, Original.
  2. Удаляю всякие временные файлы и прочий мусор.
  3. В пустые папки, которые тем не менее необходимы для работы сайта, кладу файл readme.txt. Это надо по той причине, что Git отслеживает только файлы, а не папки. Поэтому если закоммитить в Git движок с пустыми папками, то потом при выгрузке движка этих пустых, но нужных папок мы не увидим.
  4. Открываю пункт меню «Редактировать» -> «Настройки» и указываю имя пользователя, email и кодировку файлов проекта.
  5. В файлах настроек Git – gitconfig - для параметра core прописываю:
    • autocrlf = input
    • safecrlf = warn

или выполнить команды:

  • $ git config --global core.autocrlf input
  • $ git config --global core.safecrlf warn

Первый параметр дает команду Git заменить все окончания строк с CRLF в LF при записи в репозиторий.

Клонирование репозитория Git

  1. В результате этой манипуляции у нас на диске C появилась папка Target, в которой лежат файлы из репозитория папки Original. Т.е. в папке Target все концы строк приведены к формату LF или CR.
  2. Заходим в папку Target, видим в ней папку .git – удаляем эту папку.


  1. Открываем редактор Notepad++, выбираем пункт меню «Вид» -> «Отображение символов» -> отмечаем «Отображать символ Конец строки». Теперь редактор будет нам показывать символы конца строк.


  1. Выбираем пункт меню «Поиск» -> «Искать в файлах». В настройках поиска выбираем:
    • Режим поиска – Расширенный
    • Папка – C:\Target
    • Найти - \r


  1. В итоге мы найдем все файлы, которые имеют концы строк в формате Mac, т.е.\r или CR. Вряд ли их будет много, но иногда встречаются. Открываем каждый файл по очереди в том же редакторе Notepad++. Мы сможем визуально увидеть, что у файла концы строк в формате Mac:


  1. Преобразуем его в Unix формат. Выбираем «Правка» -> «Формат Конца Строк» -> «Преобразовать в UNIX-формат»



  1. Сохраняем файл и выполняем аналогичное преобразование для всех оставшихся файлов в формате Mac. В итоге в папке Target мы будем иметь движок, все файлы которого будут иметь конец строк Unix-формата LF.

Еще записи по теме

Такую петлю через git пришлось делать потому что CRLF концов много? Если я правильно понял, во всех файлах можно было сделать «Правка» -> «Формат Конца Строк» -> «Преобразовать в Win-формат»

Admin: да, можно в каждом файле отдельно формат концов строк поменять. Но т.к. файлов очень много, то пока не придумал ничего лучше такого вот "пакетного" изменения сразу во всех файлах.

Спасибо. Долго искал. Изощрённый метод однако

Как раз с данной ошибкой (LF will be replaced by CRLF ) столкнулся, но смотрю что в Нетбинсе "Правка"->"Замена", выбираем что регулярка и пишем с \r\n на \n и оно во всех файлах приведет к линуксовскому виду, ну типа того что вы добились гитом

Как я могу найти / заменить все символы CR/LF в Notepad++?

Я ищу что-то эквивалентное специальному символу ^p в Microsoft Word.

[\r\n]+ тоже должно работать

обновление 26 марта 2012 года, Дата выпуска Блокнот++ 6.0:

OMG, это действительно работает сейчас.

PCRE regexp in Notepad++

оригинальный ответ 2008 (Notepad++ 4.x) - 2009-2010-2011 (Блокнот++ 5.x)

на самом деле нет, похоже, он не работает с regexp.

но если у вас есть Notepad++ 5.X, вы можете использовать 'продлен ' режим поиска и искать \r\n . Что делает найти все ваши CRLF .

(я понимаю, что это тот же ответ, что и другие, но опять же, "расширенный режим" доступен только с Notepad++ 4.9, 5.х и более)

С апреля 2009 года у вас есть статья wiki на сайте Notepad++ по этой теме:
"как заменить концы строк, тем самым изменив макет строки".
(упомянутые georgiecasey в своем ответ ниже)

некоторые соответствующие выдержки включают в себя следующие процессы поиска:

простой поиск ( Ctrl + F ), Режим Поиска = Normal

  • просто переместите курсор в конец строки и введите Shift + право стрелка.
  • или, чтобы выбрать EOL С помощью мыши начните только в конце строки и перетащите в начало следующей строки; перетаскивание вправо от EOL не работает. Вы можете вручную скопировать EOL и вставьте его в поле для файлы Unix ( LF -только).

простой поиск (Ctrl+F), режим поиска = расширенный

опция "Extended" показывает \n и \r как символы, которые могут быть сопоставлены.
Как и в обычном режиме поиска, Notepad++ ищет точный символ.
Поиск \r в UNIX-формате файл ничего не найдет, но ищет \n будет. Аналогично, файл формата Macintosh будет содержать \r а не \n .

простой поиск (Ctrl+F), режим поиска = регулярное выражение

регулярные выражения используют символы ^ и $ для привязки строки соответствия к началу или концу строки. Например, поиск return;$ найдет вхождения " return;", которые происходят без последующего текста в той же строке. Символы привязки работают одинаково во всех форматах файлов.
Этот.' - точечный метасимвол не совпадает с окончаниями строк.

[протестировано в Notepad++ 5.8.5]:поиск регулярных выражений с явным \r или \n не работает (в отличие от документация Scintilla).
Также не выполняется поиск по явному (вставленному) LF, или на (невидимых) символах EOL, помещенных в поле при выборе EOL. Расширенный поиск ( Ctrl + R ) без regexp

Ctrl + M вставить какое-то строки. Они будут заменены строкой replace.
Я рекомендую этот метод как самый надежный, если вам действительно не нужно использовать регулярное выражение.
Например, чтобы удалить каждую вторую новую строку в файле с двойным интервалом, введите Ctrl + M дважды в строке поиска и один раз в поле заменить строку.

расширенный поиск ( Ctrl + R ) с помощью регулярных выражений.

ни Ctrl + M , $ , ни \r\n совпадают.

в той же Вики также упоминается HEX-редактор альтернативу:

  • введите новую строку в начало документа.
  • выберите просмотр документа в шестнадцатеричном режиме.
  • выберите одну из новых строк и нажмите Ctrl + H .
  • пока у вас есть диалоговое окно заменить, Выберите на заднем плане новую строку замены и Ctrl + C скопируйте его, чтобы вставить его в текстовый ввод Replace with.
  • затем заменить или заменить все, как вы хотите.

похоже, что это часто задаваемые вопросы, и предлагаемое разрешение:

простой поиск (Ctrl+H) без regexp

вы можете включить Вид / Показать конец линии или просмотреть / показать все и выбрать сейчас видимые символы новой строки. Тогда когда вы запускаете команду некоторые символы соответствующий символ будет вставить в поле поиска. Спички будет заменен заменой строка, в отличие от regex режим.

Примечание 1: Если вы выбираете их с помощью мышь, начните прямо перед ними и перетащите к началу следующей строки. Перетаскивание в конец линии не будет работа.

примечание 2: вы не можете копировать и вставлять их в поле.

расширенный поиск (Ctrl+R) без regexp

Ctrl+M вставит что-то, что соответствует новым строкам. Они будут заменены строкой replace.

в диалоговом окне заменить, Вы хотите установить режим поиска "расширенный". Режимы нормального или регулярного выражения не будут работать.

затем просто найдите "\r\n " (или просто \n для файлов unix или просто \r для файлов формата mac) и установите замену на то, что вы хотите.

Мне не очень повезло с регулярными выражениями \r\n из окна поиска / замены.

однако это работает в Notepad++ v4.1.2:

используйте меню "Вид / Показать конец строки", чтобы включить отображение символов конца строки. (Каналы возврата каретки должны отображаться как один затененный символ CRLF.)

Выберите один из символов CRLF (поместите курсор перед одним из них, удерживайте клавишу SHIFT, а затем нажмите правая клавиша курсора один раз).

скопируйте символ CRLF в буфер обмена.

убедитесь, что вы не откройте диалоговое окно найти или найти/заменить.

откройте диалоговое окно поиск / замена. Поле "найти что" показывает содержимое буфера обмена: в этом случае символ CRLF-который отображается как 2 "символа коробки" (предположительно, это непечатаемый символ?)

обеспечить что параметр "регулярное выражение" выключен.

теперь вы должны уметь считать, находить или заменять по желанию.

Я нашел, что он работает, используя функцию Replace и используя "\n" с режимом "Extended". Я использую версию 5.8.5.

Изображение с CRLF

enter image description here

изображение без CRLF

enter image description here

в 2013 году, v6.13 или более поздней версии используйте:

меню редактироватьпреобразование EOLФормат Windows.

предполагая, что он имеет поиск "регулярных выражений", найдите \r\n. Я предпочитаю \r?\n, потому что некоторые файлы не используют возврат каретки.

EDIT: Спасибо за отзыв, кто бы ни проголосовал за это. Я научился этому. ну, ничего, потому что вы не предоставили никакой обратной связи. Почему это неправильно?

используйте опцию "расширенный поиск" ( Ctrl + R ) и используйте сочетание клавиш для CRLF ( Ctrl + M ) для вставки возврата каретки.

Если вам нужно сделать сложную замену regexp, включая \r\n, вы можете обойти ограничение с помощью трехэтапного подхода:

Я открыл файл в Notepad++ и сделал замену в несколько этапов:

  1. заменить все "\r\n "на"\r\n"
  2. заменить все "; \r\n " на "\r\n"
  3. заменить все "\r\n "на""

Это помещает все разрывы, где они должны быть, и удаляет те, которые разбивают файл.

Это сработало для меня.

выполнить эту настройку. Меню - > Вид - > Показать символ - > снимите флажок Показать конец строки

чтобы изменить документ из отдельных строк в одну строку, при этом каждая строка образует одну запись в списке, разделенном запятыми:

Как я могу найти/заменить все символы CR/LF в Notepad++?

Я ищу что-то эквивалентное специальному символу ^ p в Microsoft Word.

ОТВЕТЫ

Ответ 1

[\r\n]+ тоже должен работать

Обновление 26 марта 2012 года, дата выпуска Notepad ++ 6.0:

OMG, он действительно работает сейчас.

PCRE regexp in Notepad++

Оригинальный ответ 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

На самом деле нет, он не работает с regexp.

Но если у вас есть Notepad ++ 5.x, вы можете использовать режим поиска расширенный 'и искать \r\n . Это находит все ваши CRLF .

(Я понимаю, что это тот же ответ, что и другие, но опять же, "расширенный режим" доступен только с Notepad ++ 4.9, 5.x и более)

С апреля 2009 года у вас есть статья wiki на сайте Notepad ++ по этой теме:
" Как заменить концы строк, тем самым изменив макет строки".
(упомянутый georgiecasey в его/ее ниже)

Некоторые соответствующие выдержки включают следующие процессы поиска:

Простой поиск ( Ctrl + F ), Режим поиска = Normal

  • Просто переместите курсор в конец строки и введите Shift + Right Arrow.
  • или, чтобы выбрать EOL с помощью мыши, начните с конца строки и перетащите ее в начало следующей строки; перетаскивание вправо от EOL не будет работать. Вы можете вручную скопировать EOL и вставить его в поле для файлов Unix ( LF только).

Простой поиск (Ctrl + F), режим поиска = расширенный

Параметр "Extended" показывает \n и \r как символы, которые могут быть сопоставлены.
Как и в обычном режиме поиска, Notepad ++ ищет точный символ.
Поиск \r в файле в формате UNIX не найдет ничего, но поиск \n будет. Аналогично, файл в формате Macintosh будет содержать \r , но не \n .

Простой поиск (Ctrl + F), Режим поиска = Регулярное выражение

Регулярные выражения используют символы ^ и $ для привязки строки соответствия к началу или концу строки. Например, поиск return;$ найдет вхождения "return;" которые происходят без последующего текста на той же строке. Якорные символы работают одинаково во всех форматах файлов.
"." точечный метасимвол не соответствует окончаниям строк.

[Протестировано в Notepad ++ 5.8.5]: поиск регулярных выражений с явным \r или \n не работает (вопреки Документация Scintilla).
Также не выполняется поиск в явном (вставленном) LF или на (невидимых) символах EOL, помещенных в поле, когда выбран EOL. Расширенный поиск ( Ctrl + R ) без регулярного выражения

Ctrl + M будет вставлять что-то, что соответствует символам новой строки. Они будут заменены на строку замены.
Я рекомендую этот метод как самый надежный, если вам действительно не нужно использовать регулярное выражение.
В качестве примера, чтобы удалить каждую вторую строку новой строки в двустрочном файле, дважды введите Ctrl + M в строку строки поиска и один раз в поле строки замены.

Расширенный поиск ( Ctrl + R ) с Regexp.

Ни Ctrl + M , $ , ни \r\n не совпадают.

В той же wiki также упоминается альтернатива Hex editor:

  • Введите новую строку в начале документа.
  • Затем выберите просмотр документа в шестнадцатеричном режиме.
  • Выберите одну из новых строк и нажмите Ctrl + H .
  • Пока у вас есть диалоговое окно "Заменить" вверх, выберите в фоновом режиме новую строку замены и Ctrl + C скопировать ее, чтобы вставить ее в "Заменить" с помощью текстового ввода.
  • Затем замените или замените все по своему усмотрению.

Ответ 2

Похоже, что это FAQ, и предлагаемое разрешение:

Простой поиск (Ctrl + H) без регулярного выражения

Вы можете включить View/Show End of Line или просмотреть/Показать все и выбрать видимые символы новой строки. Тогда, когда вы запускаете команду некоторыми символами соответствие символа новой строки будет вставлен в поле поиска. Матчи будет заменена заменой строка, в отличие от режима регулярного выражения.

Примечание 1: Если вы выберете их с помощью мышь, начните перед ними и перетащите к началу следующей строки. Перетаскивание до конца строки не будет Работа.

Примечание 2: Вы не можете копировать и вставлять их в поле себя.

Расширенный поиск (Ctrl + R) без регулярного выражения

Ctrl + M вставляет что-то, что соответствует символам новой строки. Они будут заменены на строку замены.

Ответ 3

В диалоговом окне "Заменить" вы хотите установить режим поиска "Extended". Нормальные или регулярные режимы выражения не будут работать.

Затем просто найдите "\ r\n" (или просто \n для файлов unix или просто \r для файлов формата Mac) и установите замену на все, что вы хотите.

Ответ 4

Мне не повезло с регулярными выражениями из окна поиска/замены.

Однако это работает в Notepad ++ v4.1.2:

Используйте меню "Показать | Показать конец строки", чтобы включить отображение символов конца строки. (Каналы возврата каретки должны отображаться как один затушеванный символ CRLF.)

Выберите один из символов CRLF (поместите курсор прямо перед ним, удерживайте клавишу SHIFT, а затем один раз нажмите клавишу RIGHT CURSOR).

Скопировать символ CRLF в буфер обмена.

Убедитесь, что диалоговое окно find или find/replace не открывается.

Откройте диалог поиска/замены. В поле "Найти что" отображается содержимое буфера обмена: в этом случае символ CRLF, который отображается как 2 "полевые символы" (предположительно это непечатаемый символ?)

Убедитесь, что параметр "Регулярное выражение" выключен.

Теперь вы можете рассчитывать, находить или заменять по желанию.

Ответ 5

Изображение с CRLF

enter image description here

Изображение без CRLF

enter image description here

Ответ 6

Как я его нашел, это использовать функцию Replace и использовать "\n" в режиме "Extended". Я использую версию 5.8.5.

Ответ 7

В 2013 году, v6.13 или новее, используйте:

Меню Правка → Преобразование EOL → Формат Windows.

Ответ 8

Предполагая, что у него есть поиск "регулярных выражений", найдите \r\n. Я предпочитаю \r?\N, потому что некоторые файлы не используют возврат каретки.

EDIT: Спасибо за отзывы, кто бы ни проголосовал за это. Я узнал, что. ну, ничего, потому что вы не дали никакой обратной связи. Почему это неправильно?

Ответ 9

Используйте функцию расширенного поиска ( Ctrl + R ) и используйте сочетание клавиш для CRLF ( Ctrl + M ), чтобы вставить возврат каретки.

Ответ 10

Если вам нужно выполнить сложную замену регулярного выражения, включающую \r\n, вы можете обойти ограничение с помощью трехэтапного подхода:

Ответ 11

Перейдите на View--> Показать symbol--> Показать всех персонажей//Это сработало для меня

Ответ 12

Я открыл файл в Notepad++ и сделал замену в несколько шагов:

  1. Заменить все "\ r\n" на "\ r\n"
  2. Заменить все ";\r\n" на "\ r\n"
  3. Заменить все "\ r\n" на ""

Это помещает все разрывы, где они должны быть, и удаляет те, которые разбивают файл.

Это сработало для меня.

Ответ 13

Сделайте эту настройку. Меню- > Вид- > Показать символ- > снимите флажок Показывать конец строки

Ответ 14

Я был совершенно не в состоянии сделать это в NP v6.9. Я нашел это достаточно легко на Microsoft Word (2K).

Откройте документ, перейдите к edit-> заменить.

Затем в нижней части окна поиска нажмите "еще", затем найдите кнопку "Специальные", и у них есть несколько вещей для вас. Для стиля Dos я использовал "параграф". Это пара в земле.

Ответ 15

Чтобы изменить документ отдельных строк в одну строку, каждая строка формирует одну запись в списке, разделенном запятыми:

Эти шаги включают, например,

в

или: (в зависимости от предпочтения)

Ответ 16

Может быть, вы можете использовать плагины TextFX

В TextFX перейдите к редактированию textfx → удалите пустые строки

Ответ 17

Просто сделайте a\r с помощью find и замените пробел в поле replace, чтобы все было в одной строке. Затем выполните поиск и замените (в моем случае - на двоеточие) и замените на:\n

Ответ 18

Чтобы найти любой вид последовательности разрыва строки, используйте следующую конструкцию регулярного выражения:

Чтобы найти и выбрать последовательные последовательности разрыва строки, добавьте + после \R : \R+ .

Как я могу найти/заменить все символы CR/LF в Notepad++?

Я ищу что-то эквивалентное специальному символу ^ p в Microsoft Word.

[\r\n]+ тоже должен работать

Обновление 26 марта 2012 года, дата выпуска Notepad ++ 6.0:

OMG, он действительно работает сейчас.

PCRE regexp in Notepad++

Оригинальный ответ 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

На самом деле нет, он не работает с regexp.

Но если у вас есть Notepad ++ 5.x, вы можете использовать режим поиска расширенный 'и искать \r\n . Это находит все ваши CRLF .

(Я понимаю, что это тот же ответ, что и другие, но опять же, "расширенный режим" доступен только с Notepad ++ 4.9, 5.x и более)

С апреля 2009 года у вас есть статья wiki на сайте Notepad ++ по этой теме:

Некоторые соответствующие выдержки включают следующие процессы поиска:

Простой поиск ( Ctrl + F ), Режим поиска = Normal

    Просто переместите курсор в конец строки и введите Shift + Right Arrow. или, чтобы выбрать EOL с помощью мыши, начните с конца строки и перетащите ее в начало следующей строки; перетаскивание вправо от EOL не будет работать. Вы можете вручную скопировать EOL и вставить его в поле для файлов Unix ( LF только).

Простой поиск (Ctrl + F), режим поиска = расширенный

Параметр "Extended" показывает \n и \r как символы, которые могут быть сопоставлены.
Как и в обычном режиме поиска, Notepad ++ ищет точный символ.
Поиск \r в файле в формате UNIX не найдет ничего, но поиск \n будет. Аналогично, файл в формате Macintosh будет содержать \r , но не \n .

Простой поиск (Ctrl + F), Режим поиска = Регулярное выражение

Регулярные выражения используют символы ^ и $ для привязки строки соответствия к началу или концу строки. Например, поиск return;$ найдет вхождения "return;" которые происходят без последующего текста на той же строке. Якорные символы работают одинаково во всех форматах файлов.
"." точечный метасимвол не соответствует окончаниям строк.

[Протестировано в Notepad ++ 5.8.5]: поиск регулярных выражений с явным \r или \n не работает (вопреки Документация Scintilla).
Также не выполняется поиск в явном (вставленном) LF или на (невидимых) символах EOL, помещенных в поле, когда выбран EOL. Расширенный поиск ( Ctrl + R ) без регулярного выражения

Ctrl + M будет вставлять что-то, что соответствует символам новой строки. Они будут заменены на строку замены.
Я рекомендую этот метод как самый надежный, если вам действительно не нужно использовать регулярное выражение.
В качестве примера, чтобы удалить каждую вторую строку новой строки в двустрочном файле, дважды введите Ctrl + M в строку строки поиска и один раз в поле строки замены.

Расширенный поиск ( Ctrl + R ) с Regexp.

Ни Ctrl + M , $ , ни \r\n не совпадают.


В той же wiki также упоминается альтернатива Hex editor:

Читайте также: