Vim忘记了猛烈的文字。每时每刻

时间:2011-05-27 09:02:48

标签: vim

这就是我的所作所为:

  1. 进入视觉模式
  2. 突出显示一些文字
  3. y (或 x
  4. 返回命令模式
  5. p
  6. 5个Vim中约有2次忘记文本,通常只是粘贴换行符。这非常令人沮丧。这是一个错误吗?我似乎无法重现它,它似乎完全随机。

2 个答案:

答案 0 :(得分:13)

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

  • y to yank
  • d{motion}删除
  • x删除字符
  • c{motion}删除并输入插入模式
  • s删除字符并输入插入模式
  • 在可视模式下,p将使用默认寄存器覆盖所选文本,并使用所选文本覆盖默认寄存器(或者更简单地说,它会交换默认寄存器和所选文本)。

如此多的命令触及默认寄存器,通常情况下它不包含您的预期。出于这个原因,养成在删除或抽出稍后要粘贴的东西时始终指定寄存器的习惯是好的。

请改为尝试:

  1. 进入视觉模式
  2. 突出显示一些文字
  3. "ay(或"ax
  4. 返回命令模式
  5. "ap

答案 1 :(得分:0)

您可能会发现yankstack有用。安装它后,粘贴p后,可以使用 Ctrl + n Ctrl + p 循环通过最近被扯过的文本。


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

来自:help "0

  

编号寄存器0包含最近猛拉的文本   命令,除非命令使用[“x]。

指定另一个寄存器

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

" Paste last yanked item
noremap <Leader>p "0p
noremap <Leader>P "0P