macOS High Sierra下Vim 8.0粘贴命令自动执行失效求助
解决Vim在macOS下粘贴命令自动进入插入模式的问题
这个情况我之前在macOS上用Vim时也碰到过,大概率是终端的粘贴模式或者Vim的交互设置出了问题,给你几个可行的解决思路:
检查终端的粘贴模式配置
很多终端工具(比如系统自带的Terminal.app或者iTerm2)默认开启了「括号粘贴模式(bracketed paste mode)」,这个模式会让粘贴内容时自动触发插入模式。你可以这样调整:- 对于Terminal.app:打开偏好设置 → 配置文件 → 键盘,找到「粘贴时发送ESC [200~和ESC [201~」的选项,取消勾选后重启终端。
- 对于iTerm2:打开偏好设置 → 高级 → 终端,找到「Allow bracketed paste mode」,把它改成「No」,然后重启iTerm2。
调整Vim的粘贴相关配置
先确认你的Vim支持系统剪贴板,在Vim里输入:echo has('clipboard'),如果返回1说明支持(你之前能正常使用,应该是支持的)。接下来可以试试这些操作:- 临时切换粘贴模式:输入
:set pastetoggle=<F2>,之后按<F2>切换到粘贴模式,再粘贴你的替换命令,完成后再按<F2>切回正常模式。 - 排查vimrc配置:如果最近修改过
~/.vimrc,可以先把它重命名(比如mv ~/.vimrc ~/.vimrc.bak),然后重启Vim测试。如果问题消失,说明是vimrc里的某个配置冲突了,再逐步排查恢复。
- 临时切换粘贴模式:输入
用Vim原生的命令行粘贴方式
如果上面的方法都没效果,你可以用更可靠的Vim原生方式粘贴命令:在正常模式下按:进入命令行模式,然后按Ctrl+R *(*对应系统剪贴板寄存器),这样剪贴板里的:%s/abc//g会直接粘贴到命令行,按回车就能执行全局替换了。
内容的提问来源于stack exchange,提问作者Qiang Li
相关产品推荐
相关产品推荐

