我正在尝试使用 vim 批量修复一些 .scc 文件,并且需要将替换字符串传递给它。
我正在尝试vim -E
通过这条线":s/\r/\r/g"
我尝试将单个字符作为变量嵌入引号中,但把\r
它搞砸了。
任何意见,将不胜感激。
猜测你真正想做的事情,因为这听起来不像是一次性的改变。以下将删除所有\r
s。
注意 它会进行就地编辑 - 无需重定向等。
perl -i.bak -p -e 's/\r+//g' filename(s)...
如果你想用一个\r
做替换它
perl -i.bak -p -e 's/\r+/\r/g' filename(s)...
Perl 会保留备份,但你也应该这样做。
它没有使用vim
,但也许你不应该想要。
在 Vim 中,您必须\n
在搜索部分和\r
替换部分中使用。但是用\n
听起来\r
很像对我什么都不做。
无论如何,仅仅为了替代而启动 Vim 可能有点过分了。你可以使用sed
:
$ sed -i.orig 's/foo/bar/' foo.txt
阅读$ man sed
以获取更多信息。
知道了。':s/\\r/\\r/g'
我只需要正确的报价水平。我之前提到的问题是,我们得到的文件可能包含在 Mac 上制作的 PC 双换行符,而 PC 无法正确读取它们。
因此,出于某种原因,使用 sed 到 s/\r/\r\n/g 并没有真正起作用,也许我可以进行更多探索。但我认为将这些传递给 vim 会有所帮助。我必须使用 vim 将 :set format=dos 发送到文件。
谢谢大家。