如何在Vim中的另一列文本后粘贴一列文本?

Lil*_*ard 66 vim

我有两个完整的文本列,我想让它们并排.例如,我有

abc
def
ghi
Run Code Online (Sandbox Code Playgroud)

123
456
789
Run Code Online (Sandbox Code Playgroud)

而且我要

123 abc
456 def
789 ghi
Run Code Online (Sandbox Code Playgroud)

我所能找到的是如何将同一行粘贴到列中每行的末尾.我无法弄清楚如何在另一列的末尾粘贴多行文本块.

Abd*_*bdo 63

我想知道为什么"视觉阻止模式"不适合我.关键是在视觉模式下猛拉(或删除).

我发现自己需要从具有可变长度的excel列中复制一些东西.我是这样做的:

Names
Donald Knuth
Sebastian Thrun
Peter Norvig
Satoshi Nakamoto

Age
100
50
60
45
Run Code Online (Sandbox Code Playgroud)

假设你想把第二列放在第一列之后.

  1. 以视觉模式猛击它:
    • 将光标移动到开头 Age
    • Ctrl + v进入可视模式
    • 移动光标到545
    • 按下y以猛拉(或d删除)

你现在已经在视觉模式下猛拉了.

  1. 粘贴(在正常模式下)

    • 移动到第一行的末尾并添加更多空格,因为它比第二行短,例如.如果粘贴"块"而不添加额外的空格,它将覆盖Sebastian Thrun中的"run".

    • 现在你在第一行,在最后一个字符后插入几个空格.确保您没有处于插入模式并点击p粘贴块.(如果要在插入模式下粘贴,请使用ctrl+r ")

在此输入图像描述

  • 请注意,如果我在我的 `vimrc` 中设置了 `set clipboard^=unnamed` 来自动在 macOS 和 Vim 之间共享剪贴板,那么这对我来说是行不通的。设置该选项后,它始终将内容粘贴为单个列,删除该选项后,粘贴的工作方式如上所述。 (5认同)
  • 实际上,它被称为“视觉块模式”,而不仅仅是“视觉模式”。 (2认同)

cli*_*ime 54

使用visual block(ctrl-v)剪切字母列.然后移动到数字列的第一行.移到最后并创建一个空格.然后粘贴字母列.

  • @clime:如果我从MacVim中的块顺序选择中复制,然后转到MacVim的另一个实例,它保留了blockwise特性.但是,如果我从另一个应用程序(这是我做的)复制,它不会.我必须粘贴到vim中,然后进行块选择并重新复制,以便使用块状寄存器. (2认同)

Mat*_*tej 15

你有:

abc
def
ghi

123
456
789
Run Code Online (Sandbox Code Playgroud)

将光标移动到a.然后CTRL+V,将光标移动到i.按y.

接下来,在3角色后面添加一个空格,然后按p.

完成.


Qix*_*Qix 7

如果您使用的是Mac,并且无法弄清楚粘贴为何将代码块插入新行,那是因为您使用的是系统粘贴板。

没问题,只是用缓冲区拉动/粘贴:

  1. Ctrlv -选择您想要的内容
  2. "字母y -拉入letter缓冲区
  3. 转到要粘贴的位置
  4. "字母p -从letter缓冲区粘贴

确保letter不是,+因为它不是系统粘贴板缓冲区,因此将具有相同的效果。


And*_*sky 5

这似乎很明显,但是如果您从外部复制的缓冲区粘贴,则仅使用可视模式粘贴将无法正常工作。您可以做的是先在空白区域进行普通粘贴,然后使用上述方法进行垂直剪切/粘贴。