在编辑器中查看换行符和回车符

use*_*est 158 newline text-editor line-breaks carriage-return

有没有人知道Linux上的文本编辑器允许我看到换行符和回车符?Vim是否支持此功能?

Cap*_*ack 237

不同意官方的答案:

:set list不会显示^ M字符(CRS).向vi/vim提供-b选项将起作用.或者,加载vim后,键入:e ++ff=unix.

  • 只是为了澄清,`:set list`显示换行符(`$`),`:e ++ ff = unix`表示CR(`^ M`); 如果你想看到两者,`:set list`然后`:e ++ ff = unix` (17认同)
  • 这是语法.`:help edit`显示`e [dit]![++ opt] [+ cmd]`.并且`:help ++ e`表示_ [++ opt]参数可用于强制'fileformat'[..] _的值. (4认同)
  • 为了扩展@dennis的注释,`:set ff = unix`告诉Vim*将行结尾改为unix样式(作为设置fileformat的一部分),因此^ M字符不再存在(因此不会显示) ).`:e ++ ff = unix`告诉它强制设置fileformat为`unix`而不实际更改内容.所以vim像Unix文件一样读取它,将CR字符看作额外的并将它们显示为^ M. (4认同)
  • 好的,:e ++ ff = unix工作正常。现在如何关闭它? (3认同)
  • 为什么`:set ff = unix`不起作用,但是`:e ++ ff = unix`呢? (2认同)
  • 出于某种原因,在`vim` 中仍然对我不起作用......我的意思是既不是`-b` 选项,也不是`:e ++ff=unix` 在里面:( (2认同)

jay*_*lee 129

:set list在Vim中将显示空白.行尾显示为' $',回车通常显示为' ^M'.

  • 不正确的`:set list`不会显示`^ M`个字符(CR).向vi/vim提供`-b`选项将起作用.或者,一旦加载了vim,输入:`:e ++ ff = unix` (231认同)
  • 仅供参考,要关闭"设置列表"模式,请使用`:set nolist` (11认同)
  • 错误的答案。:set list 不会显示 ^M 字符(CR)。对 vi/vim 使用 -b 选项将起作用。 (4认同)
  • 同样的问题在这里:http://superuser.com/questions/97692/vim-show-line-feeds-carriage-return (2认同)

Lar*_*y K 76

VI x0A通过在下一行显示后续文本来显示换行符(LF字符,代码).

-b开关用于二进制模式.例如vi -b filenamevim -b filename --.

然后它将显示CR字符(x0D),它们通常不在Unix样式文件中使用,作为字符^M.


Paw*_*lak 25

只是为了澄清为什么:set list不会将CR显示为^M没有e ++ff=unix,为什么:set list与之无关^M.

在内部,当Vim 文件入其缓冲区时,它会用自己的表示替换所有行结束字符(让我们称之为$).要确定应删除哪些字符,它首先检测行结尾存储在文件中的格式.如果只有CRLF '\r\n'或仅CR '\r'或仅LF '\n'行结束字符,则'fileformat'设置为dos,macunix分别.

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中输入.


Bri*_*son 11

请尝试以下命令.

:设置二进制

在VIM中,这应该与使用"-b"命令行选项相同.如果你把它放在你的启动(即.vimrc)文件中,它将永远适合你.

在许多*nix系统上,有一个"dos2unix"或"unix2dos"命令可以处理文件并纠正任何可疑的行结束问题.如果行结尾没有问题,则不会更改文件.


Arn*_*rno 6

建议您编辑.vimrc文件,以运行命令列表。编辑您的.vimrc文件,如下所示:

cat >> ~/.vimrc <<EOF
set ffs=unix
set encoding=utf-8
set fileencoding=utf-8
set listchars=eol:¶
set list
EOF
Run Code Online (Sandbox Code Playgroud)

在执行vim时,将执行.vimrc中的命令,您可以看到以下示例:

My line with CRLF eol here ^M¶
Run Code Online (Sandbox Code Playgroud)


mir*_*ein 5

通过使用cat-A您可以看到新行$和制表符^I

cat -A myfile
Run Code Online (Sandbox Code Playgroud)

  • “cat -A”不如“cat -e”那么可移植。-A 受 GNU coreutils 版本的 cat(1) 支持,但不支持其他实现(例如 bsd、macos 等)。 (3认同)