Блокнот игнорирует переносы строк

89615
Damon

В последнее время большинство документов я открываю в notepad.exe под windows 7, разрывов строк нет ... все просто работает вместе. Те же самые документы в любой другой программе, даже предварительно просматриваемые непосредственно в Проводнике, будут правильно отображать разрывы строк. это происходит со многими файлами .info, .css, .js .. но не со всеми.

Я предполагаю, что это какая-то символьная кодировка концовок Unix, так или иначе, но мне интересно, могу ли я что-нибудь сделать или кто-то еще испытал подобное, и могу ли я заставить блокнот работать правильно. Я предпочитаю это Notepad ++ / другие текстовые редакторы для определенных целей.

34
См. Https://stackoverflow.com/a/50241693/6309: Блокнот теперь поддерживает \ n (Windows 10, Q2 2018) VonC 5 лет назад 0

7 ответов на вопрос

41
Paul

Есть разрывы строк, однако разные операционные системы распознают разные последовательности разрывов строк.

Блокнот распознает только CR, LF (0x0d, 0x0a), тогда как другие источники могут использовать только CR или только LF.

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

Один простой способ исправить перевод строки - это скопировать и вставить текст в Word, а затем снова в блокнот, и перевод строки будет «исправлен» в последовательности CR, LF.

Ага! звучит немного как угробление блокнота, может быть, намного проще; P Damon 12 лет назад 30
Абсолютно (прокладка). Paul 12 лет назад 0
Я скопировал / вставил текст из NP ++ в Блокнот (Win). Поскольку это не было должным образом закодировано, Блокнот игнорирует мои разрывы строк. Я установил кодировку в NP ++ в "UTF-8", и все работает отлично. Спасибо :) Arkana 10 лет назад 0
Я думаю, что это действительно сбивает с толку, что это двадцатилетнее ограничение никогда не было исправлено ... Haroldo_OK 7 лет назад 3
Спасибо за WordPad обратно в подсказку Блокнот! Это очень удобный и простой трюк, который будет работать в чистой установке Windows без необходимости запоминания или установки какого-либо специального кода! bambams 7 лет назад 0
Это интересно, если ваш текст содержит только символ LF и вы вставляете его в инструменты WordPad, NotePad ++ на окнах, эти приложения автоматически "исправляют", как вы сказали, добавьте CR перед каждым LF. Я использую некоторые шестнадцатеричные инструменты, чтобы увидеть реальные данные, это онлайн onehttps: // hexed.it / `. Даже @RichTextBox в SDK от Microsoft заканчивает строки только LF. Но @TextBox по умолчанию работает как блокнот для приложений Windows Forms. Почему это так, я понятия не имею, но вот как я дошел до этого ТАКОГО вопроса. Davut Gürbüz 7 лет назад 0
Копирование и вставка обратно в Блокнот не работает с текстовыми файлами, доступными только для чтения. Это полезно, только если вы можете сохранить его. Загаженный блокнот кажется лучшим. Kyle Delaney 7 лет назад 0
@ DavutGürbüz WordPad может исправить это и добавить CR (`\ r`), но по моему опыту Notepad ++ и большинство других редакторов не добавляют автоматически CR, они просто знают, как правильно отображать LF; если я вставлю некоторый код только для LF, например, в Notepad ++, затем скопирую его оттуда и вставлю в обычный блокнот, он все равно будет отображаться в одной строке, потому что в нем по-прежнему отсутствуют CR Ken Bellows 7 лет назад 0
@kenbellows моя точка зрения была в том, что интересные приложения ведут себя по-разному из-за своих базовых компонентов. Если вы пропустили [CR] только данные из блокнота в notepad ++, вы увидите добавленный [LF]. Но если вы открываете файл из диалога, он показывает, как есть. Davut Gürbüz 7 лет назад 0
открыть с помощью слова, сохранить, затем открыть с помощью блокнота ... копирование-вставка не требуется Gavin Palmer 6 лет назад 1
Я думаю, что вам нужно выделять жирным шрифтом из "One simple Way ...", чтобы людям не приходилось читать CR и LF и все такое. Waqas Bukhary 6 лет назад 0
@WaqasBukhary Вы всегда можете редактировать ответы, чтобы улучшить их Paul 6 лет назад 0
Я могу редактировать, но у меня нет прав редактировать менее 6 символов. Waqas Bukhary 6 лет назад 0
Хорошие новости, технология [наконец-то прибывает] (https://blogs.msdn.microsoft.com/commandline/2018/05/08/extended-eol-in-notepad/). mkobit 5 лет назад 1
9
RedGrittyBrick

Word Pad

Если вы не любите notepad ++ и другие текстовые редакторы, считая, что они не являются стандартной частью всех систем Windows, используйте Wordpad. Это не так элементарно, как Блокнот.

Wordpad будет правильно читать и отображать текстовые файлы с концами строк Unix.

Другой

Если вы не любите оба текстовых редактора, тогда Notepad ++, вероятно, будет хорошим выбором.

Моя проблема с / notepad ++ для действительно быстрого просмотра / редактирования заключается в том, что он сохраняет несколько документов открытыми, если я специально не закрою их; просто не подходит для такого использования. Я могу просто заново связать файлы текстового типа с worpad и убедиться, что они в моем меню `open with ...`. Damon 12 лет назад 0
Для тех, кто читает это несколько лет спустя, вы можете отключить эту функцию в настройках, что-то вроде «Запомнить текущий сеанс для следующего запуска» Uberfuzzy 9 лет назад 2
@ Дэймон Я тоже ненавидел это поведение, но ты можешь его отключить. Вам просто нужно настроить Notepad ++, чтобы не открывать старые сессии. Зайдите в Настройки -> Настройки -> Резервное копирование. Снимите флажок «Запомнить текущий сеанс для следующего запуска». Bacon Bits 9 лет назад 2
Можно сказать, что проблема не столько в том, что текстовый редактор должен быть портирован с Windows, сколько в том, чтобы Windows предоставила хотя бы один достойный текстовый редактор. Я бы не стал считать MS Word или WordPad «текстовыми редакторами», поскольку целью этих инструментов скорее является создание отчетов, чем редактирование текста. Текст не обязательно должен идти со страницами или помещаться на страницах. До сих пор в 2018 году и Windows 10 я не нашел ничего из этого. patrik 5 лет назад 0
5
MD XF

Вы можете написать простой пакетный скрипт:

@ECHO OFF TYPE %1 | FIND /V "" >%1.1 MOVE %1.1 %1 > NUL 2>&1 START "NOTEPAD" C:\WINDOWS\SYSTEM32\NOTEPAD.EXE %1 EXIT /B 

Сохраните это как notepad.batв любом каталоге, который вам нравится. Затем, вместо того, чтобы открывать ваши .info/ .css/ .jsфайлы с помощью Блокнота, откройте их с помощью этого пакетного скрипта. Он автоматически преобразует все окончания строк Unix в DOS, а затем открывает файл с помощью Блокнота.

Недостатки:

  • Каждый раз, когда вы открываете программу, она добавляет новую строку в конец файла. (Исправлено @mpag )
  • Открывает окно командной строки (исправлено при использовании STARTв строке 4)
  • Изменяет дату создания файла на текущую дату
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/58540/discussion-between-mpag-and-md-xf). mpag 6 лет назад 0
другая рекомендация. замените строку `start` на` START "NOTEPAD" "% SystemRoot% \ System32 \ NOTEPAD.EXE"% 1`, чтобы обобщить те сумасшедшие, которые имеют D в качестве корневого диска или WinNT для своего каталога Windows. mpag 6 лет назад 0
@mpag Конечно, кроме того, что я не чувствую необходимости редактировать это в своем ответе. Любой, кто хочет, чтобы его корневой каталог не был `C:`, не получит от меня поддержки. `C:` был стандартом с момента выхода DOS в 1981 году. MD XF 6 лет назад 0
сохранить временные метки: `mkdir% 1.dir`` TYPE% 1 | НАЙТИ / V "">% 1.dir \% 1` `robocopy. % 1.dir% 1 / copy: t> NUL 2> & 1` `move% 1.dir \% 1. > NUL 2> & 1` `rmdir% 1.dir` mpag 6 лет назад 1
Или вы можете просто использовать [this] (https://en.wikipedia.org/wiki/Unix2dos) ранее существующую утилиту. mbomb007 5 лет назад 0
3
rgocs

Вам необходимо изменить тип кодировки перевода строки, используемый в файле.

В Linux есть программа под названием "unix2dos", которая может сделать это за вас. Я не уверен, что Windows поставляется с такой программой, но, похоже, есть похожая, доступная здесь: http://www.thefreecountry.com/tofrodos/

Более подробная информация об этом процессе находится в Википедии: http://en.wikipedia.org/wiki/Unix2dos, где вы можете найти примеры различных программ командной строки, которые могут внести изменения.

если у вас установлен Sublime, вы можете выбрать «Вид-> Концы строк -> Windows» и затем сохранить файл, чтобы перезаписать его. В этом случае окончания строки unix преобразуются в формат Windows. Если вы откроете этот сохраненный файл в Блокноте, он будет правильно отображать окончания строк. Junior M 10 лет назад 0
3
Huendli

Как Notepad ++ был упомянут конкретно в OP, он (по крайней мере, сейчас) имеет настройку, необходимую в:

Правка -> Преобразование EOL -> Формат Windows.

1
MD XF

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

1
0b10011

Вы правы, что это проблема с окончаниями строки Unix. Есть несколько разных концовок строки, но наиболее распространены три варианта:

  • U+000A LINE FEED (LF): Unix, Linux, macOS и т. Д.
  • U+000D CARRIAGE RETURN (CR): классический Mac OS среди других
  • U+000D CARRIAGE RETURNзатем U+000A LINE FEED(CRLF): Windows и другие не-Unix / IBM операционные системы

Более старые версии Блокнота распознают только CRLF, но более новые версии поддерживают CRLF, CR и LF .

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