Відображайте CR та LF, а не "EOL" у ": set set"


12

Замість того, щоб вибрати один символ, який відображатиметься як символ EOL, я хотів би, щоб він відображався як для CR, так і для LF окремо, незалежно від того, файл є unix або dos. Чи можливо це?


2
Тож якщо я правильно вас зрозумів, вам потрібно щось на зразок Hello%$файлів DOS (де %це CR і $є a LF)? Це неможливо з list/ listcharsналаштуванням, і я не можу реально придумати спосіб зробити це у VimScript ...
Martin Tournoij

1
@Carpetsmoker Це правильно. Крім того set list, чи є спосіб мати CRта LFпоказати як конкретних персонажів, можливо?
Людина капітана

2
Можливо, ви зможете виділити їх певним кольором, але немає жодного способу відобразити їх як конкретних символів, що не хакі афаік.
EvergreenTree

Я думаю, що одночасно можна побачити або CR, або LF, не обидва.
SibiCoder

1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Антоній

Відповіді:


2

З деякими застереженнями ви можете це зробити, використовуючи двійковий режим Vim. Здається, ви можете скористатися командою

vim -b +'set list' somefile

Крім того, ви можете помістити в своє .vimrc:

:set binary
:set list

Важливим є те, що бінарний режим повинен бути встановлений перед тим, як розглянутий файл читається в буфер. Після того, як Vim прочитав файл у, вже пізно; ця хитрість покладається на те, щоб змінити, як Vim читає файл. Особливо, що вам потрібно, щоб Vim не намагався вгадати конкретний тип файлу <EOL>.

Двійковий режим виконує все, що ви хочете, вимикаючи це автоматичне виявлення роздільника ліній, але також виконує ще декілька речей:

  • встановлює 'textwidth'0
  • встановлює 'wrapmargin'0
  • знімає 'modeline'
  • знімає 'expandtab'

Тож ви, можливо, не хочете мати це у своєму .vimrc; можливо, краще використовувати версію командного рядка, і лише для тих файлів, де вам потрібен цей спеціальний вид відображення.

Для отримання додаткової інформації:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'

but it does quite a few other things as wellце тому, що бінарний файл - це FileTypeдеяка автоматична команда чи це якась вбудована, неминуча річ?
Капітан Людина

Цією фразою я мав намір запровадити список, який негайно слідує за ним.
Птолемарх

Правильно, я просто не процитував це все :) Що я мав на увазі, чи робить це те, тому що він використовує деякі FileTypeдзвінки binaryз тими автоматичними командами, або це була лише якась вбудована річ?
Капітан Людина

1
Ага, правильно. Ніщо з цього не має нічого спільного з типами файлів (але це досить сприйняте формати файлів). це частина самого бінарного режиму. Див :help 'binary'. А може бути :help 'fileformat'.
Птолемарх

0

Якщо ви додасте до свого ~/.vimrc:

set ffs=unix
set list

Це завжди буде показувати CRяк ^Mі LFяк $.

За замовчуванням vim інтерпретує файл, у якого є лише CRLFзакінчення, як dos-файл, і відображатиметься CRLFяк $. Встановлюючи ffs=unix, ви змушуєте vim завжди відкриватися як файл Unix, і тому CR трактується як додатковий символ.

Примітка. Будьте уважні, якщо ви змінюєте та зберігаєте dos файли. Якщо натиснути ENTER, він вставить лише a LF. Вам потрібно буде вручну вставити CRвведення CTRL+V, CTRL+M.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.