如何在Vim中的指定字符后插入文本?

时间:2014-01-11 02:41:28

标签: vim

以下是我正在使用的原材料:

First.   
This is the second line.   
The third.   

我想在文本中插入“在4个字符后插入一些东西”,使其成为

Firsinsert something behind 4 charactert.   
Thisinsert something behind 4 character is the second line.   
The insert something behind 4 characterthird. 

:%s/^.\{4}/insert something behind 4 character/g   

substitute命令不插入文本。如何在每行的第4个字符后插入此字符串?

4 个答案:

答案 0 :(得分:4)

非常接近。告诉vim开始替换模式的 end

:%s/^.\{4}\zs/insert something behind 4 character/

请注意,我没有使用g标记:它在这里没有区别,因为模式在一行中不会匹配多次。

当然,还有其他方法可以做到,例如

:%s/^.\{4}/&insert something behind 4 character/

也就是说,将前四个字符替换为自己的副本,然后是新文本。或

:%s/\%5c\@=/insert something behind 4 character/

:%s/\%5c\&/insert something behind 4 character/

(如果线上只有4个字符,则最后两个不起作用。)

:help sub-replace-special
:help /\zs
:help /\&
:help /\%c
:help /\@=

,一般来说,

:help pattern

答案 1 :(得分:2)

使用&匹配以插入匹配的部分

:%s/^.\{4}/&insert something behind 4 character/g

答案 2 :(得分:2)

由于其他人已经建议如何使用替换,我会提到视觉模式作为替代:

  1. 将光标放在t中的First
  2. Ctrl + v 进入可视模式。
  3. 2 j 向下移动两行。
  4. Shift + i 要插入。
  5. 输入您的讯息。它似乎只是插在第一行。
  6. Escape 将您输入的内容插入三个选定的行。

答案 3 :(得分:1)

使用以下正则表达式,您将能够完成从每行的第四个字符开始插入。

:%s/\(^.\{4}\)/\1insert something behind 4 character/g