VI编辑器copy与yank/delete功能混淆问题咨询
Vim复制内容被覆盖的解决办法
方法1:使用有名寄存器存储目标内容
Vim默认的复制/删除操作会写入无名寄存器,导致之前的内容被覆盖。你可以把需要保留的内容存入有名寄存器(a-z任意字母),避免被后续操作覆盖:
- 高亮选中要保留的内容后,输入
"ay(a可替换为任意字母,比如b、c),将内容存入a寄存器 - 需要粘贴时,输入
"ap即可取出a寄存器里的内容 - 后续的yank/delete操作只会修改无名寄存器,不会影响a寄存器中的内容
方法2:用黑洞寄存器处理无用操作
如果只是想删除不需要的行但不想覆盖之前的复制内容,可以直接用黑洞寄存器(_)来执行删除:
- 删除单行时输入
"_dd - 删除多行时,先选中行范围(比如
5,10),再输入"_d - 黑洞寄存器不会保存任何内容,因此不会覆盖你之前复制的内容
方法3:修改Vim配置持久化解决
如果不想每次都手动指定寄存器,可以在~/.vimrc(或~/.config/nvim/init.vim针对Neovim)中添加配置,让删除操作默认使用黑洞寄存器:
" 删除操作不覆盖无名寄存器 nnoremap dd "_dd nnoremap D "_D vnoremap d "_d
添加后,日常的删除操作都会写入黑洞寄存器,不会影响你之前复制的内容;而复制操作依然使用无名寄存器,正常粘贴即可。
内容的提问来源于stack exchange,提问作者snakehand
相关产品推荐
相关产品推荐

