search - 如何在 Vim 中搜索一行中的第 N 个匹配项?

标签 search vim editor match

我正在编辑一个 wiki 文件,并希望在两个现有列之间添加一个新列。

| *No* | *Issue* | *File* | *Status* | 
| 1 | blah | foo | open |
| 2 | blah1 | foo1 | close |

假设我想在上面的第三列和第四列之间插入一个新列。如果我可以在给定行中搜索 | 字符的第四个匹配项,我可以将其替换为 | |。但如何在 Vim 中做到这一点呢?

最终结果如下所示:

| *No* | *Issue* | *File* | | *Status* | 
| 1 | blah | foo | | open |
| 2 | blah1 | foo1 | | close |

最佳答案

如何将宏记录到寄存器 q输入qq3f|a|<ESC>q在命令模式下(ESC 表示按 Escape 键)。现在您可以通过:%norm@q将此宏应用到每一行。

额外奖励:

使用此模式,您可以添加更复杂的操作,例如将第一列复制为第 3 列(如果光标位于第一列):

qqf yf|;;;p0q

哦,你的问题的答案:搜索第四次出现的 |在线上由 3f| 完成(如果光标位于位置 0 且位于 | 字符上,如您的示例所示)。

关于search - 如何在 Vim 中搜索一行中的第 N 个匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9718706/

相关文章:

Java在codechef问题中包含字符串搜索

vim - Vim 自动转到下一个编译错误

vim - vim中向上/向下翻页时如何保持光标的垂直位置?

vim - 最喜欢的 (G)Vim 插件/脚本?

java - 在 Java 中搜索集合

batch-file - 如何搜索用户文件夹,同时避免使用 DIR 挖掘得太深?

search - Solr 停用词魔法

Vim ctags 行为异常

java - 自定义 Eclipse 透视图中的多个编辑器区域

java - 在 Java SWT 中将绘图线程化到 Canvas 上