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.
jay*_*lee 129
:set list在Vim中将显示空白.行尾显示为' $',回车通常显示为' ^M'.
Lar*_*y K 76
VI x0A通过在下一行显示后续文本来显示换行符(LF字符,代码).
将-b开关用于二进制模式.例如vi -b filename或vim -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,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中输入.
Bri*_*son 11
请尝试以下命令.
:设置二进制
在VIM中,这应该与使用"-b"命令行选项相同.如果你把它放在你的启动(即.vimrc)文件中,它将永远适合你.
在许多*nix系统上,有一个"dos2unix"或"unix2dos"命令可以处理文件并纠正任何可疑的行结束问题.如果行结尾没有问题,则不会更改文件.
建议您编辑.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)
cat -A myfile
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
249031 次 |
| 最近记录: |