VI показывает управляющие символы после разделения большого текстового файла с помощью git bash split
Я использовал эту ветку, чтобы разбить большой текстовый файл на несколько небольших файлов. Чтобы разделить файл, я использую следующую команду в Git Bash:
split -l 80000 largeFile
Затем я хочу отредактировать каждый из выходных файлов, но когда я открываю их в VI, выходные данные выглядят странно, и я не могу правильно редактировать файл. Вывод содержит много @
символы и символы. Я предполагаю, что это контрольные символы. Смотрите следующий скриншот:
Мои вопросы:
- Почему файл отображается так?
- Как правильно отредактировать файл в VI?
1 ответ
Если вы посмотрите внимательно, каждый второй персонаж ^@
, который внутри Vim представляет нулевой байт (ср. :help <Nul>
). Буквы между ними читаемы (USE [TIP_Update_...
). Итак, мы рассматриваем 16-битную кодировку (т.е. два байта для каждого символа) (в основном?) Текста ASCII; поскольку нулевой байт является вторым, он имеет порядок байтов.
Первые два символа (ÿþ
нарушать правила; это метка порядка байтов, которая дает текстовым редакторам подсказку о том, что такое кодировка. Как он отображается, Vim вместо этого думает, что текст находится в latin1
кодирование.
Итак, вы имеете дело с 16-битным кодированным UCS-2 Unicode (ISO / IEC 10646-1) (имя в Vim: ucs-2le
; увидеть :help encoding-values
), но Vim не обнаруживает их автоматически.
Вы также можете
- принудительно закодировать вручную
:help ++enc
::e! ++enc=ucs-2le
- перенастроить Vim (
:help 'fileencodings'
) автоматически обнаруживать их; на самом деле, значение по умолчанию включает в себяucs-bom
и должен обнаружить это просто отлично.
Я знаю, что это очень старый пост, но он может кому-то помочь. Если вы используете Git Bash для разделения файла на несколько файлов, попробуйте создать основной файл в формате 65001 ( UTF-8) вместо ANSI 1252 или любого другого. Я столкнулся с теми же проблемами NUL в моих разделенных файлах, но когда я преобразовал свой основной файл в UTF-8, он работал отлично.
SPLIT -l 50000 Main.txt Split.txt