vim在多行之前粘贴多行,无空白

vim在多行之前粘贴多行,无空白,vim,copy-paste,Vim,Copy Paste,假设我有两个街区: 1 23 456 hello.. world world codecode 然后我需要这个块(介于1和hello之间,中间没有空格): 最好的快捷方式是什么 我在WindowsXP和Windows7上使用了gvim7.3.46 这是我的 set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set diffexpr=MyDiff()

假设我有两个街区:

1
23
456

hello..
world world
codecode
然后我需要这个块(介于1和hello之间,中间没有空格):

最好的快捷方式是什么


我在WindowsXP和Windows7上使用了gvim7.3.46

这是我的

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

set diffexpr=MyDiff()
function MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

我使用了
C-q
y
C-p
,结果是:

1
23
456

1  hello..
23 world world
456codecode
  • 将光标放在
    1

  • 点击
    进入可视块模式

  • 将光标向下移动到
    456
    并点击
    $
    选择整个块

  • 点击
    y
    猛拉那个方块

  • 将光标放在
    hello
    中的
    h

  • 点击
    p

  • 将光标放在
    1

  • 点击
    进入可视块模式

  • 将光标向下移动到
    456
    并点击
    $
    选择整个块

  • 点击
    y
    猛拉那个方块

  • 将光标放在
    hello
    中的
    h

  • 点击
    p


  • 我会使用视觉块模式。这样做:

  • 在第一个块的开头,按
    进入可视块模式
  • 选择相关行,然后按
    $
    将所选内容扩展到行尾
  • d
    删除第一个块。这也将复制它
  • 然后在第二个块的开头按
    P
    ,将第一个块粘贴到第二个块之前,中间没有空格

  • 第一行范围将为空,因此如果不需要,则必须删除这些行。

    我将使用视觉块模式。这样做:

  • 在第一个块的开头,按
    进入可视块模式
  • 选择相关行,然后按
    $
    将所选内容扩展到行尾
  • d
    删除第一个块。这也将复制它
  • 然后在第二个块的开头按
    P
    ,将第一个块粘贴到第二个块之前,中间没有空格

  • 然后,第一行范围将为空,因此,如果不需要,则必须删除这些行。

    使用递归宏在两个块之间来回跳转,删除和连接行:

    qq}jdd''pkgJj@qq
    
    值得注意的击键:

    • 跳回到您最近从
    • @q
      q
      的定义内部调用宏
      q
    • gJ
      将两行连接在一起,两行之间没有空格

    使用递归宏在两个块之间来回跳转,删除和连接行:

    qq}jdd''pkgJj@qq
    
    值得注意的击键:

    • 跳回到您最近从
    • @q
      q
      的定义内部调用宏
      q
    • gJ
      将两行连接在一起,两行之间没有空格

    按照你说的方法,我得到了1个hello。。(在问候之前加空格)23世界世界(在世界之前加空格)456codecode有没有办法不用空格,只需一步完成,还是粘贴没有空白?谢谢,L在这种情况下,
    1
    23
    456
    行的末尾可能会有额外的空格。尝试选择这些行并运行
    :'使用您所说的方法,我得到了1个hello。。(在问候之前加空格)23世界世界(在世界之前加空格)456codecode有没有办法不用空格,只需一步完成,还是粘贴没有空白?谢谢,L在这种情况下,
    1
    23
    456
    行的末尾可能会有额外的空格。尝试选择这些行并运行
    :“使用您的示例,我得到了您想要的东西:没有空间。发布vimrc,查看是否存在阻止此非常简单和直接的解决方案工作的设置。而且,第一步的方法是记录一个宏。如果你想要“一步”,问“一步”。我发现在我的windows操作系统gvim4.7a上,当我使用
    ctrl-q
    ctrl-c
    (复制)
    ctrl-v
    (粘贴)时,两个块没有空格地连接在一起;当我使用
    ctr-q
    y
    (或
    d
    P
    ,它与空格连接;但我不知道为什么通过你的样品,我得到了你想要的东西:没有空间。发布vimrc,查看是否存在阻止此非常简单和直接的解决方案工作的设置。而且,第一步的方法是记录一个宏。如果你想要“一步”,问“一步”。我发现在我的windows操作系统gvim4.7a上,当我使用
    ctrl-q
    ctrl-c
    (复制)
    ctrl-v
    (粘贴)时,两个块没有空格地连接在一起;当我使用
    ctr-q
    y
    (或
    d
    P
    ,它与空格连接;但我不知道为什么
    qq}jdd''pkgJj@qq