VIM替换: Using the current line as the search string

标签 vim substitution

假设有以下文本文件,它实际上是资金和价格统计数据的转储:

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/

相关文章:

c# - 正则表达式 C# 是否可以在替换中使用变量?

vim - Vimscript检查当前缓冲区是否有未保存的更改

linux - 如何删除一行bashrc linux

vim - 如何跳转到vim中不同选项卡内的标记?

regex - 删除 Google 表格中 <> 内单元格中的所有内容

json 的 Javascript 变量替换

彩色打印的 VIM Unix 命令

vim - 不读 ~/.vimrc

perl 只查找和替换完全匹配

c - C中字符的转置