Отображать CR и LF вместо «EOL» в «: set list»

12

Вместо того, чтобы выбирать один символ для отображения в качестве символа EOL, я бы хотел, чтобы он отображался для CR и LF отдельно и независимо от того, является ли файл Unix или DOS. Это возможно?

Капитан человек
источник
2
Так что, если я вас правильно понимаю, вы хотите что-то вроде Hello%$для файлов DOS (где %CR и $a LF)? Это невозможно с настройкой list/ listchars, и я не могу придумать, как это сделать в VimScript ...
Мартин Турной
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'
Ptolemarch
источник
but it does quite a few other things as wellэто потому, что двоичный файл FileTypeс некоторыми автоматическими командами или это какая-то встроенная, неизбежная вещь?
Капитан Мэн
Под этой фразой я хотел представить список, который следует сразу за ним.
Ptolemarch
Правильно, я просто не процитировал все это :) Я имел в виду, делает ли он эти вещи, потому что он использует некоторые, FileTypeвызываемые binaryс этими автоматическими командами, или это была просто встроенная вещь?
Капитан Мэн
1
Ах, верно. Ничто из этого не имеет ничего общего с типами файлов (но это довольно распространено в форматах файлов). это часть самого бинарного режима. См :help 'binary'. И возможно :help 'fileformat'.
Ptolemarch
0

Если вы добавите в свой ~/.vimrc:

set ffs=unix
set list

Это всегда будет показывать CRкак ^Mи LFкак $.

По умолчанию vim интерпретирует файл с CRLFокончаниями только как файл dos и показывает CRLFкак $. Установив ffs=unix, вы заставляете vim всегда открываться как файл unix, и, следовательно, CR обрабатывается как дополнительный символ.

Примечание. Будьте осторожны при изменении и сохранении файлов dos. Если вы нажмете ENTER, он будет только вставить LF. Вам нужно будет вручную вставить CR, набрав CTRL+V, CTRL+M.

wisbucky
источник