假设有以下文本文件,它实际上是资金和价格统计数据的转储:
PBCPDF
05/01/2006
0.0000
0.0000
PBCPDF
0.0000
06/01/2006
0.0000
0.0000
PBCPDF
0.0082
[… lines repeat …]
我想要实现的是删除除第一个之外的所有 PBCPDF
实例,我可以将替换命令编写为 :.+1,$s/PBCPDF\n//g
.
但是,由于我想编写一个宏来处理多个基金名称,因此我需要一种方法来使用某种模式来检索当前行作为搜索模式,而无需我手动执行。
有办法做到这一点吗?
最佳答案
ggyy:+1,$s/<Ctrl-R>"<BS>//g
让我们看看它到底做了什么。
转到第一行
gg
拉出整行
yy
开始替换
:+1,$s/
从您将其拉入的寄存器中获取当前行:
<Ctrl-R>"
注意:不要键入“,您必须实际按住 Control 键并按 R,然后按双引号。
删除行尾字符:
<BS>
注意:按退格键。
什么都不替换。
//g
您可以通过用 qq/q 或其他内容包装它来将其记录在宏中。
关于VIM替换: Using the current line as the search string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1691784/