ycmd是一个基于Clang的语义补全的服务
1. 安装服务端
有两种方式启动服务端,手动和自动。
1.1 手动方式:
编译ycmd服务,这个是需要在相应平台上自己编译的,他会去下载clang等一些库。编译方法原文
安装编译工具
sudo apt-get install build-essential cmake python-dev
下载ycmd源码,我把代码直接下载到自己指定的目录下, build之后会自动去下载clang的库。
cd ~/.config/sublime-text-3/User
git clone git@github.com:Valloric/ycmd.git && cd ycmd
git submodule update --init --recursive
./build.py --all
大概半个小时,安装成功,作者更新比较频繁,现在编译完只会生成一个库,ycm_core.so了,之前还有一个ycm_client_support.so
,现在被合并了。
接下来,手工启动服务器(注意当前目录一直是在ycmd这个目录下), 服务器启动需要一个配置文件ycmd/default_settings.json
, 每次启动之后会自动被删除掉,所以我们先拷贝一份到当前目录下
cp ycmd/default_settings.json .
然后打开他进行修改两项,global_ycm_extra_conf
指定默认的.ycm_extra_conf.py的位置和hmac_secret
设定HMAC的key。
默认的.ycm_extra_conf.py
下载,用来配置补全功能的设置,具体参数可以看文档.ycm_extra_conf.py配置
wget https://raw.githubusercontent.com/Valloric/ycmd/master/cpp/ycm/.ycm_extra_conf.py
生成HMAC key
Command Palette > Ycmd: Create HMAC keys
服务器是用python写的,所以在ycmd/ycmd下面有一个__main__.py文件,我们可以启动它。
python ycmd --port 8888 --options_file ycmd/default_settings.json
服务端已经启动了
这个方式的最大的好处就是,服务器可以部署在远程,或者做成Docker image
,只需要指定ip和port就可以任意使用了。
1.2 自动方式
打开Ycmd的配置文件,设置3个参数即可。
/* ===== YCMD AUTO START MODE =====*/
"use_auto_start_localserver": 1,
"ycmd_path": "/home/will/.config/sublime-text-3/Packages/User/ycmd/ycmd",
"python_binary_path": "/usr/bin/python",
ycmd命令列表,包括重启服务器,显示错误列表等。
Command Palette > Ycmd: