我正在编辑一个 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/