分页: 1 / 2

[已得到高人指点]求助vim诡异的^M问题

发表于 : 2010-04-11 11:14
lgy0417
俺有一个文件,在cat -v下面明明每行都有^M,但是到了vim下面通通不显示(但是其他的文件有时候就会显示^M)

试着设置set fileformat也没有用

在vim里面做替换%s/^M//g居然说pattern not found,这不是睁眼说瞎话么?明明到处都有,但是vim不显示也不替换

请教下谁明白为什么是这样

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 11:20
cnkilior
dos2unix

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 11:41
adagio
pocoyo 写了:
%s/^M//g
^M 怎么打的....
:em06
C-v
C-m

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 17:16
lgy0417
adagio 写了:
pocoyo 写了:
%s/^M//g
^M 怎么打的....
:em06
C-v
C-m
我是这么打的啊 话说这个替换我以前做过 只要vim界面里能看到^M,就可以用%s/^M//g替换 但是有的文件明明一堆回车 vim却不显示也不给替换……

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 17:19
lgy0417
pocoyo 写了:
%s/^M//g
^M 怎么打的....
:em06
没错啊 文件打包上传了 附件~

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 17:25
i_NIX
奇怪,我的vim7.2上,一个^M都没有显示哦

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 17:36
lgy0417
i_NIX 写了:奇怪,我的vim7.2上,一个^M都没有显示哦
是吧 可是你可以试一试

代码: 全选

cat -v r.vim
于是就有一屏的^M……
我觉得这是vim的问题

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 17:44
JiangHui
cat -v 就是show-nonprinting啊
怎么能在vim直接敲^M呢,字符串“^M”和非打印字符不一样的

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 18:02
lgy0417
JiangHui 写了:cat -v 就是show-nonprinting啊
怎么能在vim直接敲^M呢,字符串“^M”和非打印字符不一样的
没说在insert模式下直接敲啊 只是敲命令才c-v c-m啊
我的问题是为什么vim为什么对于有的文件显示行尾的^M 有的就不显示也不能替换

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 18:24
JiangHui
你上传那文件在vim里没显示^M

找了一个满是非打印字符的二进制文件试了替换下完全正常哦,个人问题?
1.jpg
1.jpg (119.27 KiB) 查看 3682 次

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 18:43
lgy0417
JiangHui 写了:你上传那文件在vim里没显示^M

找了一个满是非打印字符的二进制文件试了替换下完全正常哦,个人问题?
1.jpg
我非常想知道为啥那个满是^M的文件在vim下就显示不出来……

Re: 求助vim诡异的^M问题

发表于 : 2010-04-11 22:24
lilydjwg

代码: 全选

:set ffs=unix
强制不识别 dos 格式即可显示,或者编辑时

代码: 全选

:e ++ff=unix your_file
。set ff 是更改文件,而不是更改处理文件的选项,相当于做了 dos2unix 程序的活,然后要保存一下。

Vim 在处理时内部把所有按照识别出的 ff 所对应的换行符都转换成了 \0,正则中以 \n 匹配,除非你指定命令行选项 '-b' 或者打开文件时使用 ++bin 置位 'binary' 选项,否则你是看不到识别为 dos fileformat 的文件中的 ^M 的,就像你在 Win 下 fopen(file, "rt") 中看不到它一样。

更多请查看:

代码: 全选

:h ++
:h ff
:h ffs

Re: 求助vim诡异的^M问题

发表于 : 2010-04-12 9:57
lgy0417
lilydjwg 写了:

代码: 全选

:set ffs=unix
强制不识别 dos 格式即可显示,或者编辑时

代码: 全选

:e ++ff=unix your_file
。set ff 是更改文件,而不是更改处理文件的选项,相当于做了 dos2unix 程序的活,然后要保存一下。

Vim 在处理时内部把所有按照识别出的 ff 所对应的换行符都转换成了 \0,正则中以 \n 匹配,除非你指定命令行选项 '-b' 或者打开文件时使用 ++bin 置位 'binary' 选项,否则你是看不到识别为 dos fileformat 的文件中的 ^M 的,就像你在 Win 下 fopen(file, "rt") 中看不到它一样。

更多请查看:

代码: 全选

:h ++
:h ff
:h ffs
NB,你是传说中的神?

Re: 求助vim诡异的^M问题

发表于 : 2010-04-12 13:08
realfiona
lilydjwg 写了:

代码: 全选

:set ffs=unix
强制不识别 dos 格式即可显示,或者编辑时

代码: 全选

:e ++ff=unix your_file
。set ff 是更改文件,而不是更改处理文件的选项,相当于做了 dos2unix 程序的活,然后要保存一下。

Vim 在处理时内部把所有按照识别出的 ff 所对应的换行符都转换成了 \0,正则中以 \n 匹配,除非你指定命令行选项 '-b' 或者打开文件时使用 ++bin 置位 'binary' 选项,否则你是看不到识别为 dos fileformat 的文件中的 ^M 的,就像你在 Win 下 fopen(file, "rt") 中看不到它一样。

更多请查看:

代码: 全选

:h ++
:h ff
:h ffs
赞 又学到了一点

Re: 求助vim诡异的^M问题

发表于 : 2010-04-12 21:52
lilydjwg
lgy0417 写了: NB,你是传说中的神?
:em02 被认出来了 :em02