在“:set list”中显示CR和LF而不是“ EOL”


12

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


2
所以,如果我理解你正确地你想要的东西喜欢Hello%$的DOS文件(其中%一个CR并且$LF)?list/ listchars设置不可能做到这一点,我也无法真正在VimScript中找到实现此目的的方法……
Martin Tournoij

1
@Carpetsmoker是的。除了set list还有一种方法可以显示CRLF显示为特定字符?
曼队长

2
您也许可以用某种颜色来突出显示它们,但是没有任何方法可以将它们显示为不是骇客的afaik的特定字符。
EvergreenTree

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

1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
安东尼

Answers:


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带有一些自动命令,还是某种内置的,不可避免的东西?
曼队长

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

是的,我只是没有引用全部内容:)我的意思是说它是做这些事情的,因为它使用了那些通过自动命令FileType调用的东西,binary或者仅仅是一些内置的东西?
曼队长

1
嗯对 这些都与文件类型无关(但是在文件格式中却相当多)。这是二进制模式本身的一部分。请参阅:help 'binary'。也许吧:help 'fileformat'
Ptolemarch

0

如果添加到您的~/.vimrc

set ffs=unix
set list

这将始终显示CR^MLF作为$

默认情况下,vim会将只有CRLF结尾的文件解释为dos文件,并显示CRLF$。通过设置ffs=unix,您可以强制vim始终作为unix文件打开,因此CR被视为多余的字符。

注意:但是,如果修改和保存Dos文件,请小心。如果按ENTER,则只会插入一个LF。您需要CR通过输入手动插入CTRL+V, CTRL+M

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.