当前位置: 首页 > article >正文

Vim + YCM + clangd

目录

1. Vim的安装 
        1.1 Vim安装vim-plug
2. 安装YCM
3. 进行语言补全配置
        3.1 测试效果


1. 目的:让 Vim 像 C/C++ IDE 一样具备自动补全代码等功能

2. YCM:YouCompleteMe 

GitHub - ycm-core/YouCompleteMe: A code-completion engine for Vim

Linux chris-166 6.2.0-36-generic #37~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct  9 15:34:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

1. Vim的安装 

安装方式可以通过apt的方式,也可以通过源码编译的方式(Ubuntu环境下以编译源码的方式安装Vim-CSDN博客)

安装完成后,可以先对 ~/.vimrc 做一些简单的配置

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

set backspace=2
set mouse=a
set number

1.1 Vim安装vim-plug

管理 vim 插件的工具比较多,比如 Vundle ,这里用 vim-plug 来进行 vim 插件的下载安装管理。

GitHub - junegunn/vim-plug: :hibiscus: Minimalist Vim Plugin Manager

chris_166@chris-166:/usr/local/vim$ mkdir  ~/.vim/autoload -p
chris_166@chris-166:/usr/local/vim$ cd  ~/.vim/autoload
chris_166@chris-166:~/.vim/autoload$ wget https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

 2. 安装YCM

借助 vim-plug 来安装 YCM。在"~/.vimrc"中添加

chris_166@chris-166:~/.vim/autoload$ vim ~/.vimrc
call plug#begin('~/.vim/plugged')
Plug 'ycm-core/YouCompleteMe'
call plug#end()

 添加完之后保存并退出后,然后再次进入vim ~/.vimrc后,执行:PlugInstall

 安装的YCM放在"~/.vim/plugged/"

3. 进行语言补全配置

chris_166@chris-166:~/.vim/plugged/YouCompleteMe$ python3 install.py --cs-completer --clangd-completer --verbose

  • --rust-completer:支持Ruby;
  • --cs-completer --clangd-completer:支持C++/C;

还可以在~/.vimrc中添加如下YCM的参数 

let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
" 开启 YCM 基于标签引擎
let g:ycm_collect_identifiers_from_tags_files=1
" 从第2个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=2
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1

3.1 测试效果

代码自动补全


http://www.kler.cn/a/132799.html

相关文章:

  • 前端开发设计模式——责任链模式
  • SpringBoot配置相关的内容
  • python机器人Agent编程——多Agent框架的底层逻辑(上)
  • 【书生大模型实战营 闯关材料】入门岛:第4关 玩转HF/魔搭/魔乐社区
  • GitLab 如何降级?
  • torchvision库在进行图片转换操作中报antialias参数没有显式设置会导致不同图片后端中的值不统一的警告信息
  • 【Qt开发流程】之HelloWorld程序
  • demo(一)eureka----服务注册与提供
  • 图数据库Neo4J 中文分词查询及全文检索(建立全文索引)
  • C++关系运算符重载
  • PHP 中传值与传引用的区别,什么时候传值什么时候传引用?
  • html书本翻页效果,浪漫表白日记本(附源码)
  • 苍穹外卖--实现公共字段自动填充
  • C++知识点总结(6):高精度乘法真题代码
  • 信号的机制——信号的发送与处理
  • spring+pom-注意多重依赖时的兼容问题[java.lang.NoSuchMethodError]
  • Milk Scheduling S——拓扑排序
  • 机器学习:十大算法快速回顾
  • 计算机毕业设计 基于SpringBoot的车辆网位置信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 振南技术干货集:比萨斜塔要倒了,倾斜传感器快来!(6)
  • Induced AI:一个专门为自动化任务而设计的AI原生浏览器RPA平台
  • 苍穹外卖项目笔记(2)
  • 【Java并发编程三】线程的基本使用一
  • SpringBoot整合Thymeleaf
  • C语言实现冒泡排序(超详细)
  • 使用FFmpeg合并多个ts视频文件转为mp4格式