有没有人知道Linux上的文本编辑器允许我查看换行符和回车符? Vim是否支持此功能?
答案 0 :(得分:208)
不同意官方答复:
:set list
将不显示^ M个字符(CR)。向vi / vim提供-b选项将起作用。或者,加载vim后,键入:e ++ff=unix
。
答案 1 :(得分:117)
:set list
将显示空格。行尾显示为“$
”,回车通常显示为“^M
”。
答案 2 :(得分:75)
VI通过在下一行显示后续文本来显示换行符(LF字符,代码x0A
)。
将-b
开关用于二进制模式。例如vi -b filename
或vim -b filename --
。
然后它将显示CR字符(x0D
),这些字符在Unix样式文件中通常不会用作字符^M
。
答案 3 :(得分:21)
只是为了澄清为什么:set list
不会将^M
显示为e ++ff=unix
而:set list
以及为什么^M
与$
无关。< / p>
在内部,当Vim 将文件读取到其缓冲区中时,它会用自己的表示替换所有行尾字符(让我们称之为'\r\n'
)。要确定应删除哪些字符,它首先检测行结尾存储在文件中的格式。如果只有CRLF '\r'
或仅CR '\n'
或只有LF 'fileformat'
行尾字符,则dos
设置为mac
,{{1分别和unix
。
当设置list
选项时,无论检测到$
选项,Vim都会在发生换行时显示fileformat
个字符。它使用自己内部的换行符表示,这就是它所显示的内容。
现在,当您写入缓冲区到光盘时,Vim会根据检测到的fileformat
选项插入行尾字符,必须转换所有内部$
的有适当的人物。如果fileformat
恰好是unix
,那么它只会写\n
代替其内部换行符。
诀窍是强制Vim将dos
编码的文件读作unix
个文件。最终效果是它将删除所有\n
的{{1}}未触及的内容,并将其显示为缓冲区中的\r
。设置^M
将另外显示内部行结尾为:set list
。毕竟,您会看到$
代替^M$
编码的换行符。
另请注意,dos
与显示:set list
无关。您可以自行检查(确保首先禁用^M
选项),在插入模式下使用list
后跟CTRL-V
插入单个CR。将缓冲区写入光盘并再次打开后,尽管Enter
选项设置为0,您仍会^M
。
您可以在http://vim.wikia.com/wiki/File_format或在Vim中输入list
找到有关文件格式的更多信息。
答案 4 :(得分:10)
尝试以下命令。
:设置二进制文件
在VIM中,这应该与使用“-b”命令行选项相同。如果你把它放在你的启动(即.vimrc)文件中,它将永远适合你。
在许多* nix系统上,有一个“dos2unix”或“unix2dos”命令可以处理文件并纠正任何可疑的行结束问题。如果行结尾没有问题,则不会更改文件。
答案 5 :(得分:5)
我建议您编辑.vimrc文件,以运行命令列表。 编辑.vimrc文件,如下所示:
cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF
当你执行vim时,会执行.vimrc中的命令,你可以看到这个例子:
My line with CRLF eol here ^M¶
答案 6 :(得分:0)
您可以使用 gedit 编辑器查看中断线。
首先,如果尚未安装:
sudo apt-get install gedit
现在,安装 gedit插件:
sudo apt-get install gedit-plugins
并选择 Draw Spaces 插件,在“偏好设置”上输入,然后选择绘制新线条
使用 VSCode ,您可以安装行尾扩展程序。
Sublime Text 3 具有一个名为 RawLineEdit 的插件,该插件将显示行尾并允许插入任意行尾类型
shift + ctrl + p
并开始键入插件的名称,然后切换以显示行尾。
答案 7 :(得分:0)
使用cat
和-A
,您可以将新行显示为$
,将标签页显示为^I
cat -A myfile