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 宏的强大功能。
我们可以做到以下几点:
- 拉出长字符串
yt.
- 转到下一行
j
- 开始录制宏
qa
- 转到行首
0
- 将拉出的文本粘贴到前面
P
- 进入插入模式,添加一个space
i <esc>
- 转到下一行
j
- 录制结束
q
- 通过键入
2@a
重播宏,其中 2
是要在 上播放宏的行数
鉴于你的例子只是一个例子,我将忽略你在第二行到最后一行而不是第一行中添加 space 的事实。将光标放在第一行的开头,试试这个:
- dt. 或者任何你需要 delete 你想要在所有行前面的文本
- Ctrl-vGPp, 在哪里
- Ctrl-vG 视觉选择第一列
- P 将您在步骤 1 中删除的内容替换为第一列(即 删除第一列 你刚刚选择了)
- p 放回您刚刚删除的列。
对您的输入文件这样做可以得到
longStrPattern....
longStrPatternLine0
longStrPatternxx...
longStrPatternLineN
如果您的输入是(请参阅 longStrPattern
之后的 space)
longStrPattern ....
Line0
xx...
LineN
你可以做到 df Ctrl-vGPp得到
longStrPattern ....
longStrPattern Line0
longStrPattern xx...
longStrPattern LineN
如果你复制 'longStrPattern' 尝试使用这个:
:2,$s/.*/\=@0 . ' ' . submatch(0)
我有类似的东西
longStrPattern....
Line0
xx...
LineN
我想要的是
longStrPattern....
longStrPattern Line0
longStrPattern xx...
longStrPattern LineN
我知道一种方法是阻止 select Line0 到 LineN 并通过键入 longStrPattern 然后转义键来插入。 有没有更好的方法我不需要手动输入 longStrPattern 因为它可能是一个很长的字符串。
我们可以利用 vim 宏的强大功能。 我们可以做到以下几点:
- 拉出长字符串
yt.
- 转到下一行
j
- 开始录制宏
qa
- 转到行首
0
- 将拉出的文本粘贴到前面
P
- 进入插入模式,添加一个space
i <esc>
- 转到下一行
j
- 录制结束
q
- 通过键入
2@a
重播宏,其中2
是要在 上播放宏的行数
鉴于你的例子只是一个例子,我将忽略你在第二行到最后一行而不是第一行中添加 space 的事实。将光标放在第一行的开头,试试这个:
- dt. 或者任何你需要 delete 你想要在所有行前面的文本
- Ctrl-vGPp, 在哪里
- Ctrl-vG 视觉选择第一列
- P 将您在步骤 1 中删除的内容替换为第一列(即 删除第一列 你刚刚选择了)
- p 放回您刚刚删除的列。
对您的输入文件这样做可以得到
longStrPattern....
longStrPatternLine0
longStrPatternxx...
longStrPatternLineN
如果您的输入是(请参阅 longStrPattern
之后的 space)
longStrPattern ....
Line0
xx...
LineN
你可以做到 df
longStrPattern ....
longStrPattern Line0
longStrPattern xx...
longStrPattern LineN
如果你复制 'longStrPattern' 尝试使用这个:
:2,$s/.*/\=@0 . ' ' . submatch(0)