vim: 将块粘贴到块旁边

vim: paste block next to block

我知道了

        ______0______
       /             \
    __7__           __3__
   /     \         /     \
  0       4       9       8
 / \     / \     / \     / \
7   7   0   4   6   0   3   2

      ______another______
     /                   \
  __block__           __just__
 /         \         /        \
aside      the     first      one

我愿意

        ______0______                  ______another______
       /             \                /                   \
    __7__           __3__          __block__           __just__
   /     \         /     \        /         \         /        \
  0       4       9       8      aside      the     first      one
 / \     / \     / \     / \    
7   7   0   4   6   0   3   2  

是否有某种“多行块”copy/cut 并粘贴到 vim 中?

没有神奇的方法可以实现这一目标,但通过 :help visual-block 和一些计划是可行的。

首先,天真的方法,visual-block模式:

  1. 将光标放在包含 another.

    的行的第一列
  2. <C-v>进入visual-block模式,然后jjjj向下扩展块,$扩展到末尾每行。

  3. d剪掉。

  4. 将光标移动到包含0的行的末尾,然后按p放置刚刚剪切的内容。

    恐怖:

            ______0______      ______another______
           /                  /                   \       \
        __7__           _  __block__           __just__   _3__
       /     \         /  /         \         /        \      \
      0       4       9  aside      the     first      one     8
     / \     / \     / \     / \
    7   7   0   4   6   0   3   2
    

问题是“块文本”(由于缺少更好的词)是“就地”完成的,没有添加填充或假设用户的意图。

为了将“块文本”放在正确的位置,您需要自己添加一些填充:

  1. 将光标放在包含 another.

    的行的第一列
  2. <C-v>进入visual-block模式,然后jjjj向下扩展块,$扩展到末尾每行。

  3. d剪掉。

  4. 将光标移动到包含 0 的行的末尾,用 A<Space><Space><Space> 追加必要的空格,然后按 p 输入您想要的内容刚剪。

    好多了:

            ______0______                ______another______
           /             \              /                   \
        __7__           __3__        __block__           __just__
       /     \         /     \      /         \         /        \
      0       4       9       8    aside      the     first      one
     / \     / \     / \     / \
    7   7   0   4   6   0   3   2
    

注意::help 'virtualedit' 也可以使用,但它可能需要特别小心,所以我更喜欢手动添加填充的简单性。