Calcweb.ru

Информационный портал
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как отключить поддержку Unix Line Endings в Блокноте Windows 10

Этот день мы приближали, как могли — блокнот в Windows 10 стал понимать юниксовый перевод строки

Notepad в windows 10 начал понимать юниксовый перевод строки, а не только формат Windows.

С проблемой «каши» вместо удобочитаемого текста десятилетиями сталкивались те, кто пытался открыть в среде Windows текстовые документы, подготовленные на других операционных системах. Теперь же всё в одночасье изменяется. И это изменение столь же мало, сколь и эпично по своим практическим результатам и идеологическим последствиям. Microsoft вновь пытается играть в кросс-интеграцию и поддержку открытых стандартов.

Долгие годы Windows Блокнот мог нормально отображать только те текстовые документы, которые содержали символы начала новой строки в формате Windows End of Line (EOL) — «возврат каретки» (CR) и «подача на строку» (LF). На деле это приводило к тому, что Notepad не смог правильно отобразить содержимое текстовых файлов, созданных в Unix, Linux и macOS, где в качестве признака конца строки использовался только символ LF.

Например, вот скриншот Notepad, пытающегося отобразить содержимое текстового файла Linux .bashrc, который содержит только символы Unix LF EOL:

image

А вот скриншот недавно обновленного «Блокнота», отображающего содержимое того же самого файла UNIX / Linux .bashrc, но с правильными переносами:

image
Обратите внимание, что строка состояния указывает обнаруженный формат EOL текущего открытого файла.

Так же для гибкого управления новой возможностью в разделе реестра [HKEY_CURRENT_USERSoftwareMicrosoftNotepad] вводятся два дополнительных ключа:

image

По накалу страстей спор о способе начала новой строки в электронных документах сравним со спором о пробелах и табуляциях в исходных текстах программ. У этого противостояния «за строку» было много причин, как лежащих в области древних стандартов и традиций, так и берущих свои корни в особенностях конструкции печатных машин и телетайпов. Не меньшую роль сыграло и стремление одних программистов буквально выполнять (интерпретировать) команды и управляющие символы, а других — следовать здравому смыслу.

Что мы можем узнать о проблеме из Википедии

Исторически на механических пишущих машинках был рычаг, который возвращал каретку к левому краю страницы и прокручивал вал, подвигая бумагу вверх на строку. На телетайпах и более поздних алфавитно-цифровых печатающих устройствах (АЦПУ) вместо каретки была головка, в лазерных принтерах она перестала быть материальной, но в термине возврат каретки всё это продолжали называть кареткой, чтобы его не менять. На телетайпах возврат каретки и подачу строки разделили, откуда традиция представления перевода строки как CR+LF перешла и к текстовым файлам.

Читайте так же:
Как создать ярлык SDelete для безвозвратного удаления файлов и папок

Системы, основанные на ASCII или совместимом наборе символов, используют или LF (перевод строки, 0x0A), или CR (возврат каретки, 0x0D) по отдельности, или последовательность CR+LF. Эти названия основаны на командах принтера: перевод строки означает, что одна строка на бумаге должна быть перенесена при печати, а возврат каретки означает, что каретка печатающего устройства должна вернуться к началу текущей строки.

  • CR (ASCII 0x0D) использовался в 8-битовых машинах Commodore, машинах TRS-80, Apple II, системах Mac OS до версии 9 и OS-9;
  • LF (ASCII 0x0A) используется в Multics, UNIX, UNIX-подобных операционных системах (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD), BeOS, Amiga UNIX, RISC OS и других;
  • CR+LF (ASCII 0x0D 0x0A) используется в DEC RT-11 и большинстве других ранних не-UNIX- и не-IBM-систем, а также в CP/M, MP/M, MS-DOS, OS/2, Microsoft Windows, Symbian OS, протоколах Интернет.
  • LF (U+000A): англ. line feed — подача строки <ПС>;
  • CR (U+000D): англ. carriage return — возврат каретки <ВК>;
  • NEL (U+0085): англ. next line — переход на следующую строку;
  • LS (U+2028): англ. line separator — разделитель строк;
  • PS (U+2029): англ. paragraph separator — разделитель абзацев.

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

Юникод старается примирить эту разницу, уравнивая CR, LF и CR+LF, однако вступает в противоречие с наследуемым им ASCII при трактовке последовательности LF+CR, не предварённой CR: согласно ASCII это один перевод строки, а согласно Юникоду — два.

Как отключить поддержку End of Line (EOL) для других ОС в Блокноте

Начиная с обновления за октябрь 2018 года (версия 1809) , Windows 10 представляет обновленную версию устаревшего приложения «Блокнот», в которую входит ряд новых изменений, в том числе поддержка символов конца строки для текстовых документов, созданных с помощью окончаний строк Unix и Linux (LF). ) и окончания линий Macintosh (CR).

Читайте так же:
Как в Windows 10 Redstone 5 включить темную тему для классического Проводника

Хотя это одна из наиболее востребованных функций для отображения содержимого текстовых файлов, созданных в другой ОС, в правильном формате, такое поведение не работает в каждом сценарии. По этой причине версия 1809 содержит несколько ключей реестра, которые можно изменить, чтобы вернуться к старому интерфейсу, который поддерживает только конец строки CRLF (возврат каретки (CR) и перевод строки (LF)).

В этом руководстве по Windows 10 мы расскажем, как отключить поддержку конца строки для файлов, созданных в Unix, Linux или macOS, и восстановим старое поведение «Блокнота», доступное до обновления октября 2018 года.

Как вернуть старую поддержку EOL в Блокнот

Если у вас возникают проблемы с отображением содержимого с помощью Блокнота или вам нужна только поддержка Windows CRLF Конец строки, то для восстановления старого поведения выполните следующие действия:

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

  1. Используйте сочетание клавиш Windows + R, чтобы открыть команду « Выполнить» .
  2. Введите regedit и нажмите кнопку ОК, чтобы открыть реестр .

Найдите следующий путь:

Совет. В Windows 10 теперь можно скопировать и вставить путь в адресную строку реестра, чтобы быстро перейти к месту назначения ключа.

Дважды щелкните fPasteOriginalEOL REG_DWORD и установите значение от до 1 .

Дважды щелкните fWindowsOnlyEOL REG_DWORD и установите значение от до 1 .

После того, как вы выполнили эти шаги, перезапустите Блокнот, чтобы начать использовать приложение со старым поведением.

Если вы передумаете, вы всегда можете отменить изменения, используя те же инструкции, но на шаге № 4 и № 6 обязательно измените значения на .

Больше ресурсов по Windows 10

Для получения более полезных статей, обзоров и ответов на распространенные вопросы о Windows 10 посетите следующие ресурсы:

Disable Unix Line Endings Support in Windows Notepad

Notepad is one of the classic Windows apps that Microsoft updates rarely. Starting in Windows 10 Build 17661, Microsoft has made one improvement to the app. It now recognizes Unix line endings, so you can view and edit Unix/Linux files with Notepad. There’s a chance that this new behavior may not work for your scenarios, or you may prefer to disable this new behavior and return to Notepad’s original behavior. Here is how.

In Unix/Linux, line endings are quite different from what Windows uses.
In Windows, there are two symbols used for that purpose: char(10), known as the Carriage Return (CR), and char(13), known as Line Feed (LF). Linux uses only LF for line endings.

For years, Notepad supported only the CRLF scheme, making it impossible to read and edit Linux text files. Probably, thanks to integration of Windows Subsystem for Linux, Notepad in Windows 10 build 17661 can recognize Linux line endings.

Here is a screenshot of Notepad trying to display the contents of a Linux .bashrc text file, which only contains Unix LF EOL characters:

Notepad Before

The next screenshot shows the updated Notepad app, which displays the same file properly:

Notepad After

Notepad Line Ending Statur Bar

The status bar indicates current line endings.It is possible to disable this behavior when required.

To disable Unix Line Endings support in Windows Notepad, do the following.

  1. Open the Registry Editor app.
  2. Go to the following Registry key.

See how to go to a Registry key with one click. If this key doesn’t exist, you should create it manually.

The fWindowsOnlyEOL value works as follows:

fWindowsOnlyEOL = 0: Insert the currenly open document’s detected EOL character when Return/Enter key is hit.

fWindowsOnlyEOL = 1: Force Windows CRLF line endings when Return/Enter key is hit.

The fPasteOriginalEOL parameter accepts the following values.

fPasteOriginalEOL = 0: Modifies the EOL character f the text being pasted into Notepad to the EOL character of the currently open document.

fPasteOriginalEOL = 1: EOL characters in text pasted into Notepad are not modified.

Finally, Winaero Tweaker can be used to customize Unix line endings support in Notepad.

Winaero Tweaker Unix Line Endings Notepad

You can download Winaero Tweaker here: Download Winaero Tweaker

Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options:

If you like this article, please share it using the buttons below. It won’t take a lot from you, but it will help us grow. Thanks for your support!

Author: Sergey Tkachenko

Sergey Tkachenko is a software developer from Russia who started Winaero back in 2011. On this blog, Sergey is writing about everything connected to Microsoft, Windows and popular software. Follow him on Telegram, Twitter, and YouTube. View all posts by Sergey Tkachenko

Команда Windows для преобразования окончаний строки Unix?

Есть ли команда Windows для преобразования окончаний строк файла?

У нас есть test.bat , который нам нужно запустить, чтобы запустить наш сервер. Мы используем Perforce, и нам нужно иметь окончание строк unix в нашей рабочей области. По какой-то причине нам не разрешено изменять окончания строк для Windows в наших рабочих пространствах. Однако сервер работает в Windows.

Каждый раз, когда я должен запускать bat файл, я открываю его в Notepad ++ и выбираю Edit → EOL conversion → Windows. Есть ли способ автоматизировать это, так что нам не нужно вручную изменять окончание строки каждый раз, когда мы синхронизируемся с Perforce?

ОТВЕТЫ

Ответ 1

Это можно сделать очень легко с помощью команды more , которая включена в Windows NT и более поздних версиях. Чтобы преобразовать input_filename , который содержит UNIX EOL (конец строки) n — output_filename , который содержит Windows EOL rn , просто выполните следующее:

Команда more имеет дополнительные параметры форматирования, о которых вы, возможно, и не подозреваете. Запустите more/? , чтобы узнать, что еще может сделать more .

Ответ 2

Используйте утилиту unix2dos. Вы можете скачать бинарные файлы здесь.

Ответ 3

Вы можете сделать это без дополнительных инструментов в VBScript:

Поместите вышеуказанные строки в файл unix2dos.vbs и запустите его следующим образом:

Вы также можете сделать это в PowerShell:

который можно было бы еще более упростить:

Вышеуказанный оператор работает без явной замены, потому что Get-Content неявно разбивает входные файлы на любой тип linebreak (CR, LF и CR-LF), а Set-Content объединяет входной массив с разрывами строк Windows (CR- LF) перед записью в файл.

Ответ 4

Я имел дело с проблемами CRLF поэтому я решил создать действительно простой инструмент для конвертации (в NodeJS):

Так что если у вас есть NodeJS с установленным npm, вы можете попробовать это:

Путь может быть настроен динамически с помощью регулярного выражения Glob (то же, что и в оболочке).

Так что, если вы можете использовать NodeJS, это действительно просто, и вы можете интегрировать эту команду для преобразования всего рабочего пространства в желаемые окончания строк.

Ответ 5

Windows ‘MORE не надежна, она неизбежно разрушает TAB и добавляет строки.

unix2dos также является частью Minig/MSYS, Cygutils, GnuWin32 и других коллекций двоичных портов unix — и может быть уже установлен.

Если python, этот однострочный конвертер преобразует любые окончания строк в текущую платформу — на любой платформе:

Или поместите однострочный вкладыш в .bat/shell script и на PATH в соответствии с вашей платформой:

и используйте этот инструмент, например

Ответ 6

Опираясь на TampaHaze и MD XF полезные ответы.

Это изменит все файлы .txt в текущем каталоге с LF на CRLF в командной строке.

Если вы не хотите проверять каждое изменение

Включить подкаталоги изменить

Чтобы сделать все это в пакетном файле, включая подкаталоги, не предлагая использовать ниже

Ответ 7

Затем запустите <batch script name> <FILE> и <FILE> будет мгновенно преобразован в конец строки DOS.

Ответ 10

На основании ответа Endoro, но чтобы сохранить пробелы, попробуйте следующее:

Ответ 11

Я клонировал свой проект git, используя git bash на windows . Все файлы имели LF окончания. Наш репозиторий по умолчанию имеет окончания CRLF .

Я удалил проект, а затем снова клонировал его с помощью Windows Command Prompt . Окончания CRLF были тогда целы. В моем случае, если бы я изменил окончание проекта, это привело бы к огромным усилиям и вызвало бы проблемы для моих товарищей по команде. Итак, сделал это так. Надеюсь, это кому-нибудь поможет.

Ответ 12

Я беру курс AWS, и мне часто приходилось копировать текстовые поля веб-форм AWS в Блокнот Windows. Таким образом, я получаю текст с разделителями LF только в своем буфере обмена. Я случайно обнаружил, что вставив его в мой редактор Delphi, а затем нажав Ctrl + K + W, мы напишем текст в файл с разделителями CR + LF. (Бьюсь об заклад, многие другие редакторы IDE сделали бы то же самое).

Ответ 13

Для преобразования UNIX (LF) в Windows (CR-LF) используйте следующую команду

Ответ 14

Если у вас есть bash (например, git bash), вы можете использовать следующий скрипт для конвертации из unix2dos:

голоса
Рейтинг статьи
Ссылка на основную публикацию