在vim中,如何将一列文本粘贴到不规则长度行的末尾?

时间:2013-11-18 14:22:28

标签: vim

我想在不规则长度的行末尾粘贴一列文字。

例如,我想粘贴以下内容:

SRR447882.fastq.gz
SRR447883.fastq.gz
SRR447944.fastq.gz

在这些行的末尾:

TIL01_
TIL01_
TIL04-TIP285_

过去很多次,我只是在第一行创建了足够的空间,在最长行的现有文本结束之前粘贴不会到来。但后来我需要回去删除空格。

我尝试使用谷歌搜索“vim列粘贴不规则长度行”和类似的查询。

5 个答案:

答案 0 :(得分:37)

您可以尝试执行以下四个步骤:

  1. 逐块选择前3行(您想稍后粘贴),然后按y
  2. 按行选择(V)以_结尾的3行,按:right
  3. 然后将光标移动到第一行的末尾($),粘贴被拉动的文本
  4. gv重新选择这些行,按:left
  5. 看起来像这样:

    enter image description here

答案 1 :(得分:4)

你可以这样做:

  • 从第二个街区的第一行开始
  • qq,开始录制q
  • 4k,上线四行
  • d$,删除到行尾
  • 4j,请返回上一行
  • $p,将该行粘贴在该行的末尾
  • q,停止录制宏
  • jVG,向下一行并选择其余行
  • :norm! @q,将宏应用于选择

但它确实留下了前一个文本所在的空间。 @Kent one's仍然更容易和更性感。

答案 2 :(得分:4)

我的UnconditionalPaste plugingBp / gBP映射,将寄存器内容粘贴为带有锯齿状右边缘的最小拟合(非矩形)块。

演示

enter image description here

答案 3 :(得分:0)

Step 1 - 转到SPP ...行的开头,然后用 V (大写字母V)按行开始视觉模式,按 j 2选择所需行的时间然后按 y

Step 2 - 转到TIL0 ...行的开头,然后用 V (大写字母V)按行开始视觉模式,按 j 两次要选择所需的行,请键入...

:s;$;\=' ' . split(@")[line('.')-line("'<")];g`

并按 Enter

答案 4 :(得分:0)

这是另一种方式,它有不同的感觉:

set ve=all允许在eol之后的任意列插入/粘贴。阻止复制源文本,然后在第一个目标行粘贴100|P100任何列号比目标行长),然后:'[,']s, *\%100c,,

如果您执行p而不是P,则会获得空格分隔符。