Кто-нибудь знает о текстовом редакторе в Linux, который позволяет мне видеть разрывы строк и возврат каретки? Vim поддерживает эту функцию?
Кто-нибудь знает о текстовом редакторе в Linux, который позволяет мне видеть разрывы строк и возврат каретки? Vim поддерживает эту функцию?
Ответы:
:set list
в Vim покажет пробел. Конец строк отображается как ' $
', а возврат каретки обычно отображается как ' ^M
'.
:set list
НЕ будет показывать ^M
символы (CR). Предоставление -b
опции vi / vim будет работать. Или, как только vim загрузится, введите::e ++ff=unix
:set nolist
Чтобы не согласиться с официальным ответом:
:set list
не будет отображать символы ^ M (CR). Предоставление опции -b для vi / vim будет работать. Или после загрузки vim введите :e ++ff=unix
.
:help edit
показывает e[dit]! [++opt] [+cmd]
. И :help ++e
говорит, что аргумент [++ opt] может использоваться для принудительного использования значения fileformat [..] .
:set list
показывает newline ( $
), :e ++ff=unix
показывает CR ( ^M
); если вы хотите увидеть оба, :set list
то:e ++ff=unix
:set ff=unix
говорит Vim изменить окончание строки на стиль unix (как часть настройки форматирования файла), чтобы символы ^ M больше не присутствовали (и поэтому не отображаются). :e ++ff=unix
говорит ему принудительно установить формат файла как unix
без фактического изменения содержимого. Поэтому vim читает его как файл Unix, видит символы CR как дополнительные и отображает их как ^ M.
vim
по какой-то причине ... Я имею в виду ни -b
вариант, ни :e ++ff=unix
когда внутри :(
VI показывает новые строки (символ LF, код x0A
), показывая следующий текст на следующей строке.
Используйте -b
переключатель для двоичного режима. Например, vi -b filename
или vim -b filename --
.
Затем он покажет символы CR ( x0D
), которые обычно не используются в файлах стилей Unix, в качестве символов ^M
.
Unix
среде. Но я хотел бы получить предупреждение об окончаниях строк в Windows, если они есть в файле. Будет vi -b filename
или :set binary
просто показывать, ^M
если это файл типа Windows, и нет других окончаний строк в противном случае?
Просто чтобы уточнить, почему :set list
CR не будет отображаться как ^M
без, e ++ff=unix
и почему не :set list
имеет ничего общего с ^M
.
Внутренне, когда Vim читает файл в свой буфер, он заменяет все символы конца строки своим собственным представлением (назовем его $
). Чтобы определить, какие символы следует удалить, он сначала определяет, в каком формате окончания строк хранятся в файле. Если имеются только символы CRLF '\r\n'
или только CR '\r'
или только '\n'
символы конца строки LF , то для параметра 'fileformat'
устанавливается значение dos
, mac
и unix
соответственно.
Когда list
опция установлена, Vim отображает $
символ, когда произошел разрыв строки независимо от того, какая fileformat
опция была обнаружена. Он использует собственное внутреннее представление переносов строк, и именно это он отображает.
Теперь, когда вы записываете буфер на диск, Vim вставляет символы конца строки в соответствии с тем, какие fileformat
параметры были обнаружены, по существу, конвертируя все эти внутренние $
с соответствующими символами. Если это fileformat
произошло, unix
он просто напишет \n
вместо внутреннего переноса строки.
Хитрость заключается в том, чтобы заставить Vim читать dos
закодированный файл как unix
один. Чистый эффект в том, что он удалит все \n
оставленные \r
нетронутыми и отобразит их как ^M
в вашем буфере. Установка :set list
дополнительно покажет внутренние окончания строки как $
. Ведь вы видите ^M$
вместо dos
закодированных разрывов строк.
Также обратите внимание, что :set list
это не имеет никакого отношения к показу ^M
. Вы можете проверить это самостоятельно ( list
сначала убедитесь, что вы отключили опцию), вставив один CR, используя, CTRL-V
а затем Enter
в режиме вставки. После записи буфера на диск и его повторного открытия вы увидите, ^M
что list
опция установлена на 0.
Вы можете узнать больше о форматах файлов на http://vim.wikia.com/wiki/File_format или введя :help 'fileformat'
Vim.
Попробуйте следующую команду.
: установить двоичный файл
В VIM это должно делать то же самое, что и использование параметра командной строки "-b". Если вы поместите это в свой файл запуска (т.е. .vimrc), он всегда будет для вас.
Во многих системах * nix есть команда "dos2unix" или "unix2dos", которая может обработать файл и исправить любые подозрительные проблемы с окончанием строки. Если нет проблем с окончанием строки, файлы не будут изменены.
set binary
не то же самое, что vim -b filename.py
. Есть идеи почему? Я проверил, help
и кажется, что то, что вы говорите, в целом правильно. Как мне понять, почему это так?
:e ++ff=unix
действительно показывает ^M
правильно и не показывает его, когда я использую unix
файлы типа .. Так что я думаю, что проблема решена на данный момент ...
Я предлагаю вам отредактировать ваш файл .vimrc для запуска списка команд. Отредактируйте ваш файл .vimrc, например так:
cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF
Когда вы выполняете vim, команды в .vimrc выполняются, и вы можете увидеть этот пример:
My line with CRLF eol here ^M¶
с помощью cat
и -A
вы можете увидеть новые строки как $
, вкладки как^I
cat -A myfile
Вы можете просмотреть строки разрыва, используя редактор Gedit .
Во-первых, если вы не установили:
sudo apt-get install gedit
Теперь установите плагины Gedit :
sudo apt-get install gedit-plugins
и выберите плагин Draw Spaces , войдите в настройки и выберите Draw new lines
С помощью VSCode вы можете установить расширение Окончания строки .
Sublime Text 3 имеет плагин RawLineEdit, который будет отображать окончания строк и позволять вставлять произвольный тип конца строки
shift + ctrl + p
и начать введите имя плагина и переключиться, чтобы показать конец строки.