我希望选择一个字符单独显示CR和LF,而不考虑选择一个字符显示为EOL字符,而不管文件是unix还是dos。这可能吗?

评论

因此,如果我正确理解您的要求,那么您想为DOS文件添加Hello%$之类的东西(其中%为CR,$为LF)?使用list / listchars设置是不可能的,而且我也真的无法在VimScript中提供一种方法来实现此目的。
@Carpetsmoker是的。除了设置列表外,还有一种方法可以让CR和LF显示为特定字符?

您也许可以用某种颜色来突出显示它们,但是没有任何方法可以将它们显示为不容易破解的特定字符。

我认为一次可以看到CR或LF,但不能一次看到。

设置stl + = \ [%{&ff =='mac'?'CR':&ff =='unix'?'LF':'CRLF'}]

#1 楼

有一些警告,您可以使用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'


评论


但是它也做很多其他事情,因为二进制文件是带有一些自动命令的FileType还是某种内置的,不可避免的东西?

–曼上尉
16 Sep 14 '14:36

用这个词,我的意思是介绍紧随其后的清单。

–领主
16-09-14在14:49

是的,我只是没有引用全部内容:)我的意思是说它是做这些事情的,因为它在自动命令中使用了一些称为Binary的FileType还是只是内置的东西?

–曼上尉
16年9月14日在14:54

嗯对这些都与文件类型无关(但是在文件格式中却很受关注)。这是二进制模式本身的一部分。参见:help'binary'。也许:help'fileformat'。

–领主
16年9月14日在14:59

#2 楼

如果添加到~/.vimrc中:

set ffs=unix
set list


这将始终将CR显示为^M,并且将LF显示为$。仅以CRLF结尾的文件作为dos文件,并将CRLF显示为$。通过设置ffs=unix,您可以强制vim始终作为unix文件打开,因此CR被视为多余的字符。

注意:尽管如此,在修改和保存dos文件时要小心。如果按ENTER,它将仅插入LF。您需要通过键入CR来手动插入CTRL+V, CTRL+M