有谁知道Linux上的文本编辑器,使我可以查看换行符和回车符?Vim是否支持此功能?
有谁知道Linux上的文本编辑器,使我可以查看换行符和回车符?Vim是否支持此功能?
Answers:
:set list
在Vim中将显示空格。行尾显示为“ $
”,回车符通常显示为“ ^M
”。
:set list
将不会显示^M
字符(CR)。-b
向vi / vim 提供选项将起作用。或者,一旦加载了vim,请输入::e ++ff=unix
:set nolist
反对官方答复:
:set list
将不会显示^ M字符(CRS)。为vi / vim提供-b选项将起作用。或者,一旦vim被加载,输入:e ++ff=unix
。
:help edit
显示e[dit]! [++opt] [+cmd]
。并:help ++e
说[++ opt]参数可用于强制使用'fileformat'[..]的值。
:set list
显示换行符($
),:e ++ff=unix
显示CR(^M
);如果您想同时看到两者,:set list
那么:e ++ff=unix
:set ff=unix
告诉Vim 将行尾更改为Unix风格(作为设置文件格式的一部分),因此^ M字符不再在那里(因此不显示)。:e ++ff=unix
告诉它强制设置文件格式为unix
而不实际更改内容。因此vim像Unix文件一样读取它,将CR字符视为多余字符,并将其显示为^ M。
vim
出于某种原因......我的意思是没有-b
选择,也没有:e ++ff=unix
在里面:(
只是为了阐明为什么:set list
不将CR显示为^M
没有e ++ff=unix
,为什么与CR :set list
无关^M
。
在内部,当Vim 将文件读入其缓冲区时,它将用其自己的表示形式替换所有行尾字符(我们称其为$
)。为了确定应删除哪些字符,它首先检测文件中以哪种格式存储行尾。如果只有CRLF '\r\n'
或仅CR '\r'
或仅LF '\n'
行结束字符,则'fileformat'
设置为dos
,mac
与unix
分别。
当list
选项设置,Vim的显示$
字符,当断行发生的无论什么fileformat
已被检测选项。它使用自己的内部换行符表示,这就是它的显示内容。
现在,当您将缓冲区写入光盘时,Vim会根据fileformat
检测到的选项插入行尾字符,实际上是将所有这些内部$
的字符转换为适当的字符。如果fileformat
碰巧发生了,unix
那么它将简单地\n
代替其内部换行来写入。
诀窍是迫使Vim读取一个dos
编码文件unix
。净效应是,它会删除所有\n
的留下\r
的不变并将其显示为^M
“在你的缓冲区。设置:set list
还会将内部行尾显示为$
。毕竟,您会看到^M$
代替dos
编码的换行符。
另请注意,:set list
与显示无关^M
。您可以list
通过插入单个CR使用,CTRL-V
然后Enter
在插入模式下自己检查它(确保您首先禁用了该选项)。将缓冲区写入光盘并再次打开后,^M
尽管list
选项设置为0 ,您仍会看到。
您可以在http://vim.wikia.com/wiki/File_format或键入:help 'fileformat'
Vim 来找到有关文件格式的更多信息。
请尝试以下命令。
:set二进制
在VIM中,此操作应与使用“ -b”命令行选项相同。如果将其放在启动文件(即.vimrc)中,它将始终为您准备就绪。
在许多* nix系统上,有一个“ dos2unix”或“ unix2dos”命令可以处理文件并纠正任何可疑的行尾问题。如果行尾没有问题,则不会更改文件。
set binary
与相同vim -b filename.py
。知道为什么吗?我确实检查了help
,看来您所说的大致正确。我如何弄清楚为什么会这样呢?
:e ++ff=unix
确实显示^M
正确,并且在使用unix
类型文件时不显示。.所以我想问题