Хтось знає про текстовий редактор в Linux, який дозволяє мені бачити розриви рядків і повернення каретки? Чи підтримує Vim цю функцію?
Хтось знає про текстовий редактор в Linux, який дозволяє мені бачити розриви рядків і повернення каретки? Чи підтримує Vim цю функцію?
Відповіді:
:set listу Vim покаже пробіл. Кінець рядків відображається як " $", а повернення каретки зазвичай відображається як " ^M".
:set listНЕ відображатиме ^Mсимволи (CR). Постачання -bопції vi / vim працюватиме. Або після завантаження vim введіть::e ++ff=unix
:set nolist
Щоб не погодитися з офіційною відповіддю:
:set listбуде НЕ показувати ^ M символів (CRS). Поставлення параметра -b для vi / vim буде працювати. Або після завантаження vim введіть :e ++ff=unix.
:help editпоказує e[dit]! [++opt] [+cmd]. І :help ++eговорить, що аргумент [++ opt] можна використовувати для примусового значення "fileformat" [..] .
:set listпоказує новий рядок ( $), :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's.
Внутрішньо, коли Vim читає файл у свій буфер, він замінює всі символи, що закінчуються рядками, своїм власним представленням (давайте назвемо його $). Щоб визначити, які символи слід видалити, він спочатку виявляє, у якому форматі рядки формату зберігаються у файлі. Якщо є тільки CRLF '\r\n'або тільки CR , '\r'або тільки LF '\n'завершення рядків символів, то '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's. Ви можете перевірити це самостійно (переконайтеся, що ви відключили 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¶
Ви можете переглянути лінії перерви за допомогою редактора gedit .
По-перше, якщо ви не встановили:
sudo apt-get install gedit
Тепер встановіть плагіни gedit :
sudo apt-get install gedit-plugins
і виберіть плагін Draw Spaces , введіть у меню "Налаштування" та оберіть " Намалювати нові рядки"
За допомогою VSCode можна встановити розширення закінчень рядків .
Sublime Text 3 має плагін під назвою RawLineEdit, який відображатиме закінчення рядків та дозволяє вставляти довільний тип рядкового закінчення
shift + ctrl + p і почніть вводити ім'я плагіна та перемикайте, щоб показати закінчення рядка.