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

Chr*_*oms 21 vim

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

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

SRR447882.fastq.gz
SRR447883.fastq.gz
SRR447944.fastq.gz
Run Code Online (Sandbox Code Playgroud)

在这些行的末尾:

TIL01_
TIL01_
TIL04-TIP285_
Run Code Online (Sandbox Code Playgroud)

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

我试过谷歌搜索"vim列粘贴不规则长度行"和类似的查询.

Ken*_*ent 37

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

  1. 逐块选择前3行(您想稍后粘贴),然后按 y
  2. line-wise select(V)以3行结尾_,按:right
  3. 然后将光标移动到第一行($)的末尾,粘贴被拉动的文本
  4. gv 重新选择线条,按 :left

它看起来像这样:

在此输入图像描述

  • 很酷的演示,你是如何录制的? (5认同)
  • `:right`,`block paste`,`:left`变换的好例子. (4认同)
  • 这个答案是如此糟糕,以至于值得一试吗?@downvoter,介意留言以便其他人可以学习东西吗? (4认同)
  • [Merge multiple lines](http://stackoverflow.com/questions/10760326/merge-multiple-lines-two-blocks-in-vim)帖子中有一些很好的答案.我个人喜欢ib.答案:`:1,g/^ /''+ m.| -j!`.哪个也可以解决这个问题,虽然我相信正确/粘贴/左方法稍后会更容易记住. (2认同)

Zon*_*eur 6

你可以这样做:

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

然而,它确实在之前的文本所在的位置留下了空间。@Kent one's 仍然更容易。