我不能直接删除所有连字符,因为在其他地方它们被用作减号。我可以用 找到这些日期,[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}
但我不知道如何将这三个不同的数字通配符保存在内存中。我尝试用搜索字符串(例如:%s/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/[0-9]\{4\}[0-9]\{2\}[0-9]\{2\}/g
)替换日期。
有什么想法吗?如果有命令行解决方案,我也很乐意学习。谢谢!
答案1
您只需要使用捕获组:
:%s/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\1\2\3/g
括号内捕获匹配项,然后反向引用输出这些捕获组。由于连字符在组外,因此被排除。
答案2
我不了解 vim,所以这是一个你仍然可以在 vim 中执行的解决方法:
由于您可以找到日期中出现的连字符,因此请用您知道文档中不会出现的其他内容(字符或字符串)替换它们。然后进行第二次搜索/替换,用空字符替换新字符/字符串,从而将其删除。