Vim 维姆忘记了被猛拉的文字。总是

Vim 维姆忘记了被猛拉的文字。总是,vim,Vim,我就是这么做的: 进入视觉模式 突出显示一些文本 按y(或x) 返回命令模式 按p Vim大约有2次忘记了文本,通常只是粘贴一个换行符。这很令人沮丧。这是虫子吗?我似乎无法复制它,它似乎完全是随机的。当运行p时,它从默认寄存器粘贴。每次执行以下操作时,默认寄存器的内容都会发生更改: y猛拉 d{motion}删除 x删除字符 c{motion}删除并进入插入模式 s删除字符并进入插入模式 在可视模式下,p将用默认寄存器覆盖所选文本,并用所选文本覆盖默认寄存器(或者更简单地说,它交换默认寄存器和

我就是这么做的:

  • 进入视觉模式
  • 突出显示一些文本
  • 按y(或x)
  • 返回命令模式
  • 按p

  • Vim大约有2次忘记了文本,通常只是粘贴一个换行符。这很令人沮丧。这是虫子吗?我似乎无法复制它,它似乎完全是随机的。

    当运行
    p
    时,它从默认寄存器粘贴。每次执行以下操作时,默认寄存器的内容都会发生更改:

    • y
      猛拉
    • d{motion}
      删除
    • x
      删除字符
    • c{motion}
      删除并进入插入模式
    • s
      删除字符并进入插入模式
    • 在可视模式下,
      p
      将用默认寄存器覆盖所选文本,并用所选文本覆盖默认寄存器(或者更简单地说,它交换默认寄存器和所选文本)
    由于有如此多的命令涉及到默认寄存器,因此通常情况下,它不包含您期望它包含的内容。出于这个原因,当您删除或拖动您打算稍后粘贴的内容时,最好养成始终指定寄存器的习惯

    请尝试以下方法:

  • 进入视觉模式
  • 突出显示一些文本
  • “ay
    (或
    “ax
  • 返回命令模式
  • “ap
  • 您可能会发现它很有用。安装了它后,使用
    p
    粘贴后,您可以使用Ctrl+n和Ctrl+p循环浏览最近拖动的文本


    或者更简单的解决方案是从0寄存器粘贴:

    :帮助“0

    编号寄存器0包含来自最新yank的文本 命令,除非该命令指定了另一个带有[“x]的寄存器

    我经常这样做,所以我有这张地图:

    " Paste last yanked item
    noremap <Leader>p "0p
    noremap <Leader>P "0P
    
    “粘贴最后一个拖动的项目
    noremap“0p
    noremap“0P
    
    我非常怀疑这到底是怎么回事。我怀疑您无意中拉拽了什么东西,有一个清除寄存器的宏,或者有其他调用备用寄存器的按键。要做的事情是更加注意您所做的每一个导致感知故障的命令,并找出哪一个正在接触寄存器。哪个平台?Vim的哪个版本?控制台模式vim或图形gVim?以上似乎不太可能是全部,但更多关于您环境的信息可能会帮助有想法的人尝试提供帮助。大约五分之二的情况是您意外地点击了
    o
    ,而不是
    p
    ?!您可以将文本拖动5次,并将默认寄存器的内容粘贴到您的问题上。默认寄存器是
    ,您可以通过
    :reg”
    @Prince访问其内容实际上,这是非常可能的。我想这其中的一部分有时会不假思索地使用下面列出的一些命令。带编号的寄存器(
    :help quote_number
    )也可能有用。我认为为每个yank和delete指定一个寄存器有点过火,但肯定能完成任务。在能力较差的编辑器上工作的人只有一个默认注册表,但世界还在继续。太棒了,好的,谢谢。我知道一些命令正在修改剪贴板缓冲区,但我不知道所有这些命令。从现在起,我将对重要的文本块使用命名寄存器。