首页 > 解决方案 > 替换 VIM 中每一行出现的第 N 个字符

问题描述

我有以下数据,我想替换第 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

标签: vimreplace

解决方案


您可以运行以下命令:

:%norm 3f|r

这表示:

  • :%norm在每一行上,运行以下正常命令
  • 3f|将光标移动到第 3 次出现|
  • r 用空格替换它

你当然可以这样做:

:%norm 3f|x

要彻底删除|

另一种方法是使用可视块模式(请参阅 参考资料:help visual-block)。尽管这仅在所有内容|都排成一行(即在同一列中)时才有效。


推荐阅读