Вместо того, чтобы выбирать один символ для отображения в качестве символа EOL, я бы хотел, чтобы он отображался для CR и LF отдельно и независимо от того, является ли файл Unix или DOS. Это возможно?
Так что, если я вас правильно понимаю, вы хотите что-то вроде 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; может быть лучше использовать версию для командной строки, и только для тех файлов, где вам нужен этот особый вид отображения.
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.
Hello%$
для файлов DOS (где%
CR и$
aLF
)? Это невозможно с настройкойlist
/listchars
, и я не могу придумать, как это сделать в VimScript ...set list
есть ли способ иметьCR
иLF
показывать как конкретные символы, может быть?set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Ответы:
С некоторыми оговорками вы можете сделать это, используя бинарный режим Vim. Кажется, вы можете использовать команду
В качестве альтернативы, вы можете добавить следующее
.vimrc
:Важно то, что двоичный режим должен быть установлен до того, как рассматриваемый файл будет считан в буфер. Когда 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
с этими автоматическими командами, или это была просто встроенная вещь?:help 'binary'
. И возможно:help 'fileformat'
.Если вы добавите в свой
~/.vimrc
:Это всегда будет показывать
CR
как^M
иLF
как$
.По умолчанию vim интерпретирует файл с
CRLF
окончаниями только как файл dos и показываетCRLF
как$
. Установивffs=unix
, вы заставляете vim всегда открываться как файл unix, и, следовательно, CR обрабатывается как дополнительный символ.Примечание. Будьте осторожны при изменении и сохранении файлов dos. Если вы нажмете
ENTER
, он будет только вставитьLF
. Вам нужно будет вручную вставитьCR
, набравCTRL+V, CTRL+M
.источник