Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim(7.3.3 Windows 64位):如果没有,则在行尾添加^M(ff=unix)_Windows_Vim_Vi_Eol_End Of Line - Fatal编程技术网

Vim(7.3.3 Windows 64位):如果没有,则在行尾添加^M(ff=unix)

Vim(7.3.3 Windows 64位):如果没有,则在行尾添加^M(ff=unix),windows,vim,vi,eol,end-of-line,Windows,Vim,Vi,Eol,End Of Line,我有大约100000多个文件,其中包含部分损坏的数据,混合文本+二进制文件(带有http头的jpg图像数据的单个文件),其中一些头字段具有dos样式^M^J行终止,而一些只有unix样式^J。当vim打开这样的文件时,它将其视为unix格式。因此,所有没有^M的标题行都需要添加一行。但事实证明,这是非常困难的 :1,11s/缓存控制:.*\zs^M\{0,}$/^M/ 不起作用,我尝试过各种各样的变体,甚至使用“=printf”(“%s”),“^M”)作为替换字符串。但结果总是在文件中出现一个新

我有大约100000多个文件,其中包含部分损坏的数据,混合文本+二进制文件(带有http头的jpg图像数据的单个文件),其中一些头字段具有dos样式^M^J行终止,而一些只有unix样式^J。当vim打开这样的文件时,它将其视为unix格式。因此,所有没有^M的标题行都需要添加一行。但事实证明,这是非常困难的

:1,11s/缓存控制:.*\zs^M\{0,}$/^M/

不起作用,我尝试过各种各样的变体,甚至使用“=printf”(“%s”),“^M”)作为替换字符串。但结果总是在文件中出现一个新的空行

我能够通过命令添加^m的唯一方法是

:exe“正常A\\\”

好的,一种方法是首先删除任何现有的^M,然后通过上一步添加它。但是,有没有更优雅的单一命令解决方案

(为了避免误解,这里有一个这样的文件的简短示例:

HTTP/1.1 200 OK
Server: Apache/2.2.3
(more lines...)
Cache-Control: public, max-age=214748
(more lines...)

ÿØÿá Exif  II*            ÿì
)

编辑/解决方案:对于100000多个文件,这里有一个版本(仅针对缓存控制行中缺少的^M)仅在缺少^M时匹配(因为并非所有文件都被损坏,这将与“更新!”一起节省大量时间):


:1,11s/^Cache Control:.{-}\zs\(^M*$)\(^M\)\@

单个命令可能看起来像
:v/^M/s/$/^M/
。这使用了
,也就是说。。。它插入一个用反斜杠转义的文本
^M
字符。

单个命令可能看起来像
:v/^M/s/$/^M/
。这使用了
,也就是说。。。它插入一个用反斜杠转义的文本
^M
字符。

将读取文件的程序配置为允许任何一种行尾样式(仅在标题部分)不是更容易吗?在这种情况下,这是不可能的/没有帮助的。我这样做是因为我需要。将读取文件的程序配置为允许任何一种行尾样式(仅在标题部分)不是更容易吗?在这种情况下,这是不可能的/没有帮助的。我之所以这样做是因为我需要这样做。是^m之前的反斜杠让我无法理解,在使用^V^m之后我不知道这是必要的。非常感谢。现在剩下的应该很简单了。是^M之前的反斜杠让我难以捉摸,在使用^V^M之后我还不知道它的必要性。非常感谢。剩下的应该很容易了。