gvim 复制一个字符串,并想以块样式粘贴到多行

gvim copy a string, and want to paste to multiple lines in block style

我有类似的东西

longStrPattern....
Line0
xx...
LineN

我想要的是

longStrPattern....
longStrPattern Line0
longStrPattern xx...
longStrPattern LineN

我知道一种方法是阻止 select Line0 到 LineN 并通过键入 longStrPattern 然后转义键来插入。 有没有更好的方法我不需要手动输入 longStrPattern 因为它可能是一个很长的字符串。

我们可以利用 vim 宏的强大功能。 我们可以做到以下几点:

  1. 拉出长字符串 yt.
  2. 转到下一行j
  3. 开始录制宏qa
  4. 转到行首 0
  5. 将拉出的文本粘贴到前面P
  6. 进入插入模式,添加一个spacei <esc>
  7. 转到下一行j
  8. 录制结束q
  9. 通过键入 2@a 重播宏,其中 2 是要在
  10. 上播放宏的行数

鉴于你的例子只是一个例子,我将忽略你在第二行到最后一行而不是第一行中添加 space 的事实。将光标放在第一行的开头,试试这个:

  1. dt. 或者任何你需要 delete 你想要在所有行前面的文本
  2. Ctrl-vGPp, 在哪里
    • Ctrl-vG 视觉选择第一列
    • P 将您在步骤 1 中删除的内容替换为第一列(即 删除第一列 你刚刚选择了)
    • p 放回您刚刚删除的列。

对您的输入文件这样做可以得到

longStrPattern....
longStrPatternLine0
longStrPatternxx...
longStrPatternLineN

如果您的输入是(请参阅 longStrPattern 之后的 space)

longStrPattern ....
Line0
xx...
LineN

你可以做到 dfCtrl-vGPp得到

longStrPattern ....
longStrPattern Line0
longStrPattern xx...
longStrPattern LineN

如果你复制 'longStrPattern' 尝试使用这个:

:2,$s/.*/\=@0 . ' ' . submatch(0)