使用Ansible配置Mac的Vim环境,如何忽略首次启动时的vimrc错误?
嘿,这个问题我之前配置Vim自动化的时候也碰到过!本质原因很简单——你的molokai配色是通过Vundle安装的,但第一次运行+PluginInstall时,插件还没被下载到本地,Vim加载你的vimrc时自然找不到这个配色方案,所以弹出了E185错误。下面给你几个实用的解决思路:
方法1:在vimrc里添加错误抑制逻辑(最推荐)
直接修改你的vimrc,给配色设置加上错误抑制和降级方案,这样不管是首次安装还是后续意外丢失插件,都不会弹出烦人的错误。把原来的colorscheme molokai换成这段代码:
silent! colorscheme molokai " 如果molokai加载失败, fallback到默认配色 if &colorscheme != 'molokai' colorscheme default endif
silent!会强制抑制这条命令的所有错误输出,就算molokai不存在,Vim也不会大喊大叫,而是安静地切换到默认配色。
方法2:启动Vim时临时跳过vimrc加载
如果不想修改vimrc,可以调整Ansible的shell命令,让Vim首次启动时不加载你的配置文件,直接运行Vundle的安装命令:
- name: vim | Install vundle plugins shell: vim -u NONE +"set nomore" +"call vundle#begin('~/.vim/bundle')" +"Plugin 'VundleVim/Vundle.vim'" +"Plugin 'tomasr/molokai'" +"PluginInstall" +qall
解释一下参数:
-u NONE:让Vim不加载任何vimrc文件,避免触发配色错误set nomore:防止Vim中途弹出“按回车继续”的提示,确保命令能自动跑完- 后面手动初始化Vundle并指定要安装的插件,最后执行安装并退出
不过这个方法的缺点是,如果你的vimrc里有其他Vundle插件的配置,这里得手动列出来,不如方法1省心。
方法3:启动时先执行错误抑制命令
也可以在启动Vim的命令里,先执行一条抑制配色错误的命令,再运行PluginInstall:
- name: vim | Install vundle plugins shell: vim +"silent! colorscheme molokai" +PluginInstall +qall
这个方法比较轻量,不用改vimrc,只是临时在这次启动时抑制错误,适合不想改动配置文件的场景。
方法4:提前手动克隆配色插件(备选)
如果你不想动Vim命令或配置,也可以让Ansible先把molokai插件克隆到Vundle的目录里,再运行PluginInstall:
- name: vim | Clone molokai color scheme git: repo: https://github.com/tomasr/molokai.git dest: ~/.vim/bundle/molokai clone: yes - name: vim | Install vundle plugins shell: vim +PluginInstall +qall
不过既然用了Vundle来管理插件,这种手动克隆的方式有点违背Vundle的设计初衷,所以只作为备选方案。
个人最推荐方法1,因为它从根源上解决了问题,不管是自动化安装还是日常使用,都能避免这类错误。
内容的提问来源于stack exchange,提问作者Pascal

