M1 Macbook Pro编译vim插件YouCompleteMe指南(亲测有效!)
1.前言 (系统Monterey 12.6.5)
之前一直按照网上的教程,通过执行python3 install.py 加–clang-completer或–all等后缀来编译,但最后都失败了。后来发现是python的版本造成的。因为自己之前在系统里安装了Anaconda,Anaconda自带python,所以每次编译的时候python都会定向到Anaconda中的python,而没有使用homebrew下载的python,从而导致编译失败(比如缺少各种库文件啥的,其实都有,只不过没找到)。因此,这里的python3需要改成homebrew安装的python路径,具体见下文。可以使用whereis python或which python来查看你当前shell环境中默认的是哪一个python。
2.解决方法
第一步:用homebrew安装所需的依赖,依次在shell中执行以下命令
brew install cmake
brew install llvm #该命令还会自动下载其它依赖比如vim,gcc,python等
brew install node
再执行brew info python@3.9命令查看之前上述命令安装的python在哪个路径下
➜ ~ brew info python@3.9
==> Downloading https://formulae.brew.sh/api/formula.jws.json
################################################################################################################ 100.0%
==> python@3.9: stable 3.9.16 (bottled)
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/opt/homebrew/Cellar/python@3.9/3.9.13_1 (1,203 files, 20.5MB)Built from source
/opt/homebrew/Cellar/python@3.9/3.9.16 (3,085 files, 57.6MB) *Poured from bottle using the formulae.brew.sh API on 2023-05-05 at 20:55:17
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/python@3.9.rb
License: Python-2.0
==> Dependencies
Build: pkg-config ✘
Required: gdbm ✔, mpdecimal ✔, openssl@1.1 ✔, readline ✔, sqlite ✔, xz ✔
==> Caveats
Python has been installed as/opt/homebrew/bin/python3.9 #就是这个路径
然后在.vimrc中找到这条语句,let g:ycm_server_python_interpreter ,将其改为
let g:ycm_server_python_interpreter = '/opt/homebrew/bin/python3.9' #就是你刚才找到的路径,
如果.vimrc中没有这个语句的话,那就把这句话添上即可。修改完后保存并退出。
第二步:进入到Youcomplete所在的路径,执行
/opt/homebrew/bin/python3.9 install.py
若出现以下错误信息
File /Users/usr/.vim/plugged/YouCompleteMe/third_party/ycmd/build.py does not exist; you probably forgot to run:git submodule update --init --recursive
则执行提示的命令,即git submodule update --init --recursive,这一步需要魔法且开全局代理(可能比较慢,需等会儿)。中间可能会出现一些fatal:unable access等错误,但只要没有因为出错信息而终止,基本就成功了,然后继续执行下一步。(这一步如果出错的话,不是你的原因,是网络的原因,不要自责,多试几次)
第三步:最后再重新执行/opt/homebrew/bin/python3.9 install.py,若输以下信息,则安装成功,可以编写一个C代码看看补全功能是否正常。
Generating ycmd build configuration...OK
Compiling ycmd target: ycm_core...OK
Building regex module...OK
Building watchdog module...OK
3. 检查(补全+错误提示功能)
C补全
C++补全
还有python等语言也能自动补全,这里就不一一展示了。
总结
之前一直在linux上使用vim,并下载了vimplus插件,编译Youcompleteme也比较容易。但到了m1 arm架构下就会出现各种问题。虽然以后在mac终端中使用vim编程的次数不会太多,但总想把这个问题解决了,当初mac买回来的第一天就开始配置vim,但Youcompleteme这个插件始终无法编译成功,后面就没管了,过了将近一年的时间,才重新来解决这个问题。这还得得益于chatGPT,虽然它有时候会自己编造出很多错误的答案,但也给我提供了不少思路。总之,问题解决了很开心😎。