Кто-нибудь знает о текстовом редакторе в Linux, который позволяет мне видеть разрывы строк и возврат каретки? Vim поддерживает эту функцию?
vim
newline
text-editor
line-breaks
carriage-return
usertest
источник
источник
Ответы:
: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, например так:
Когда вы выполняете vim, команды в .vimrc выполняются, и вы можете увидеть этот пример:
источник
с помощью
cat
и-A
вы можете увидеть новые строки как$
, вкладки как^I
cat -A myfile
источник
Вы можете просмотреть строки разрыва, используя редактор Gedit .
Во-первых, если вы не установили:
Теперь установите плагины Gedit :
и выберите плагин Draw Spaces , войдите в настройки и выберите Draw new lines
С помощью VSCode вы можете установить расширение Окончания строки .
Sublime Text 3 имеет плагин RawLineEdit, который будет отображать окончания строк и позволять вставлять произвольный тип конца строки
shift + ctrl + p
и начать введите имя плагина и переключиться, чтобы показать конец строки.источник