替换 VIM 中每一行第 N 次出现的字符

Replace the Nth occurrence of a character on each line in VIM

我有以下数据,我想替换第 3 次出现的 |什么都没有的符号。

ABC | DEF | GHI | XYZ | 123
ABC | DEF | GHI | XYZ | 123
ABC | DEF | GHI | XYZ | 123

最终输出应该是:

ABC | DEF | GHI  XYZ | 123
ABC | DEF | GHI  XYZ | 123
ABC | DEF | GHI  XYZ | 123

您可以运行以下内容:

:%norm 3f|r

这意味着:

  • :%norm 每行,运行 下面的普通命令
  • 3f| 将光标移动到第 3 个出现的 |
  • r 将其替换为 space

你当然可以:

:%norm 3f|x

彻底删除|

另一种方法是使用可视块模式(参见 :help visual-block)。 虽然这只有在所有 | 都排成一行时才有效(即在同一个 列)。