Windows下Git Bash运行Vim时默认寄存器覆盖剪贴板问题
问题表现
- Windows 10系统下通过Git Bash控制台启动Vim时,复制、删除文本的操作会直接覆盖系统剪贴板内容:执行
yy复制当前行、dw删除单词这类操作后,系统剪贴板原有内容会被操作对应的文本替换。 - 该异常仅在Git Bash控制台启动Vim时出现,Windows命令提示符运行Vim、使用GVim时均无该问题。
- 问题环境版本:Vim
8.2,Git2.36.1.windows.1,尝试重装Vim、升级Git版本均无法解决问题。
排查过程
- 测试
:set clipboard=unnamedplus配置后发现:不指定寄存器直接执行粘贴命令时,插入的是系统剪贴板内容而非Vim默认寄存器的内容:执行yy复制后,使用""p可以粘贴默认寄存器中存储的正确复制内容,直接执行p则会粘贴系统剪贴板内容。 - 问题疑似在Git Bash中运行过一段调用剪贴板的PyQt6脚本后开始出现,对应代码片段如下:
QApplication.clipboard().text()
- 执行
:set clipboard?命令查询Vim当前配置,发现剪贴板选项被异常设置为clipboard=unnamed——该配置会将Vim默认寄存器与系统剪贴板直接绑定,所有复制、删除操作的内容都会同步写入系统剪贴板,和异常表现完全匹配。
修复方案
编辑Vim用户配置文件.vimrc,添加如下配置移除异常的剪贴板绑定即可:
set clipboard-=unnamed
添加配置后重启Vim,复制删除操作覆盖系统剪贴板的问题会完全消失。
内容的提问来源于stack exchange,提问作者michalmonday
相关产品推荐
相关产品推荐

