我正在编辑Wiki文件,希望在两个现有列之间添加一个新列。
| *No* | *Issue* | *File* | *Status* |
| 1 | blah | foo | open |
| 2 | blah1 | foo1 | close |
比如说,我想在上面的第3列和第4列之间插入一个新列。如果我能在给定的行中搜索到第四个匹配的|
字符,我就可以用| |
替换它。但是在Vim中怎么做呢?
最终结果将如下所示:
| *No* | *Issue* | *File* | | *Status* |
| 1 | blah | foo | | open |
| 2 | blah1 | foo1 | | close |
4条答案
按热度按时间ukxgm1gy1#
在命令模式下输入
qq3f|a|<ESC>q
(ESC表示按下Escape键),将宏记录到寄存器q
中。现在,您可以通过:%norm@q
将此宏应用到每行。额外奖励:
使用此模式,您可以添加更复杂的操作,例如,将第一列复制为第3列(如果光标位于第一列):
对了,你问题的答案是:在一行中搜索第四个
|
是通过3f|
完成的(如果光标位于位置0,并且位于|
字符上,如示例所示)。6mw9ycah2#
请考虑以下替换命令。
2ledvvac3#
意思是:在每一行(
%
)上,找出以下列字符串开头的三个匹配项(\{3\}
):|然后是任何数量的非|([^|]*
),并将其替换为自身(&
),后跟|
。nle07wnf4#
您可以在
vim
中调用sed
作为过滤器: