我有一个包含以下5行代码的文本文件:
#
# 1991 60060GBNYPAN
# 1991 60061GBGTSJT
# 1991 60062GBGTSJT
#
如果我在Windows计算机上打开默认R GUI
并粘贴这五行,我会获得以下内容:
> #
> #
> 1991 60060GBNYPAN
Error: unexpected numeric constant in "1991 60060"
> # 1991 60061GBGTSJT
> # 1991 60062GBGTSJT
> #
>
当我将相同的五行代码粘贴到Stack Overflow
问题窗口时,我获得了:
#
#
1991 60060GBNYPAN
# 1991 60061GBGTSJT
# 1991 60062GBGTSJT
#
如果我将包含该代码的文本文件打开到gVim 7.4
,我会看到:
#^M
#
1991 60060GBNYPAN^M
# 1991 60061GBGTSJT^M
# 1991 60062GBGTSJT^M
#^M
gVim 7.4
中的所有字符均为蓝色,但在第三行中,(第一行)1991
为粉红色字体,60060GBNYPAN
为黑色字体。
我可以输入以下内容删除^M
:
:%s/<ctrl>Q<ctrl>M//g<return>
从这里开始:Read csv file with hidden or invisible character ^M
但是,如果我通过单击File - Save
中的gVim 7.4
然后打开文件来保存文件,则内容现在如下所示:
## 1991 60060GBNYPAN# 1991 60061GBGTSJT# 1991 60062GBGTSJT#
如果我将这些内容粘贴到R
我得到:
> #
> #
> 1991 60060GBNYPAN
Error: unexpected numeric constant in "1991 60060"
> # 1991 60061GBGTSJT
> # 1991 60062GBGTSJT
> #
>
与我在gVim 7.4
中打开文件之前相同。
如果我再次将文件打开到gVim 7.4
(删除^M
并保存文件后),我会看到:
#
#
1991 60060GBNYPAN
# 1991 60061GBGTSJT
# 1991 60062GBGTSJT
#
字体的颜色没有改变,gVim 7.4
窗口底部是一条消息:
<comment character does not work2.r" [unix] 6L, 74C 6,1 All
6,1
之前和之后的空格数量只是一个估算值。
发生了什么事?
我想除了^M
之外,文件中还有另一个隐藏字符,与^M
不同,默认情况下,当我在gVim 7.4
中打开文件时,不会显示该字符。 / p>
感谢您的任何建议。我可能需要将原始文件加载到GitHub
。我会在此处发布此消息后尝试这样做。
修改
虽然我有一个GitHub
帐户并且已经上传了文件,但是我已经记不起如何上传这个最新文件了。希望我很快就会上传文件。
如果我输入:
删除:set list<return>
之后gVim 7.4
中的 ^M
我看到了:
$
#$
# $
1991 60060GBNYPAN$
# 1991 60061GBGTSJT$
# 1991 60062GBGTSJT$
#$
我认为:set list
应该显示所有隐藏的字符,但它显示的是第二行{(1}}和#
之间的空格(如果我是第三行)将第一个$
计为一行。
答案 0 :(得分:2)
要找到麻烦的角色,最好查看文件的 hexdump 。在Unix上,有许多这样的工具:hexdump
/ hd
/ od
等。
由于您使用的是Windows,因此可以使用Vim附带的xxd
命令行工具。 :help 23.4
(Vim用户手册的二进制文件主题)告诉您如何打开文件,以及(在使用XXD 下)如何将文件视为十六进制转储。