Vim 维姆忘记了被猛拉的文字。总是
我就是这么做的:Vim 维姆忘记了被猛拉的文字。总是,vim,Vim,我就是这么做的: 进入视觉模式 突出显示一些文本 按y(或x) 返回命令模式 按p Vim大约有2次忘记了文本,通常只是粘贴一个换行符。这很令人沮丧。这是虫子吗?我似乎无法复制它,它似乎完全是随机的。当运行p时,它从默认寄存器粘贴。每次执行以下操作时,默认寄存器的内容都会发生更改: y猛拉 d{motion}删除 x删除字符 c{motion}删除并进入插入模式 s删除字符并进入插入模式 在可视模式下,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指定一个寄存器有点过火,但肯定能完成任务。在能力较差的编辑器上工作的人只有一个默认注册表,但世界还在继续。太棒了,好的,谢谢。我知道一些命令正在修改剪贴板缓冲区,但我不知道所有这些命令。从现在起,我将对重要的文本块使用命名寄存器。