YouCompleteMe插件入门

  • 概述
  • 安装
    • Vundle安装
  • 文件拷贝
    • 配置文件
    • vim配置
  • 命令
    • 主命令
    • 子命令
      • 跳转命令
      • 设置快捷键
  • 参考

概述

本文主要介绍YCM插件的安装与使用。

安装

Vundle安装

  • 添加插件
    在文件.vimrc中添加Plugin 'ycm-core/YouCompleteMe
  • 运行安装命令
    打开vim工具,输入命令行:PluginInstall
    国内网速不好,可能下载时间会比较长。。。
  • 进入插件目录
$ cd ~/.vim/bundle/YouCompleteMe
  • install dependence
$ sudo apt install build-essential cmake vim python3-dev -y
  • install relate language
$ sudo apt install mono-complete golang nodejs npm -y

由于插件依赖一些第三库,所以安装前先检查YCM是否安装了相关依赖库,输入命令如下

$ git submodule update --init --recursive
  • 安装
    输入安装命令
$ python3 install.py --all

if you only want install C-family language, you can input as follow:

$ python3 install.py --clangd-completer

文件拷贝

将插件目录下third_party/ycmd/examples文件夹中的配置文件模板文件.ycm_extra_conf.py拷贝到.vim文件夹下,具体操作如下:

$ cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim

配置文件

下述内容是插件模板文件中的内容

flags = [
'-Wall',
'-Wextra',
'-Werror',
'-fexceptions',
'-DNDEBUG',
# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
# language to use when compiling headers. So it will guess. Badly. So C++
# headers will be compiled as C headers. You don't want that so ALWAYS specify
# a "-std=<something>".
# For a C project, you would set this to something like 'c99' instead of
# 'c++11'.
'-std=c++11',
# ...and the same thing goes for the magic -x option which specifies the
# language that the files to be compiled are written in. This is mostly
# relevant for c++ headers.
# For a C project, you would set this to 'c' instead of 'c++'.
'-x',
'c++',
'-isystem',
'/usr/include',
'-isystem',
'/usr/local/include',
'-isystem',
'/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1',
'-isystem',
'/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include',
]
  • -std:语言标准
    如果是C语言项目,需要将语言标准改为-std=c99,如果是C++项目则根据具体项目的语言标准,比如-std=c++11
  • -x:编程语言
    根据项目实际需求选择对应编程语言
C语言 C++语言 Objective-C语言 CUDA语言
c’ c++ objc cuda
  • -isystem:头文件目录
    ~~需要制定项目所需的标准库和第三方库的目录,常用目录如下:
  1. /usr/include:系统包含的头文件
  2. /usr/local/include:用户安装库相关头文件
  3. /usr/lib/c++/9:C++相关头文件,具体C++版本根据实际指定~~

vim配置

  • 配置文件
    .vimrc文件中添加如下配置,指定插件配置文件的路径。
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
  • python版本
    建议使用python3版本,可使用命令行查看目前安装的软件版本
python3 --version

.vimrc文件中指定python路径

 let g:ycm_server_python_interptreter='/usr/lib/python3.8'

通过上述配置,就可以使用TAB键正向选择匹配结果,持续按TAB键,直到循环结束。而shift + TAB可以实现反向循环。

命令

主命令

  • :YcmRestartServer:重启服务
    如果ycmd completion server 因不明原因中断,可以通过上述命令重启该服务。
  • :YcmDiags:诊断
    调用该命令,如果文件中存在错误和警告,将会覆盖VIMlocationlist文件并打开
  • :YcmDebugInfo:调试信息
    改命令将会打印出当前文件一系列的调试信息
  • :YcmCompleter:扩展命令
    通过该命令可以访问一些列的子命令,像跳转功能、类型信息等

子命令

跳转命令

使用该命令允许在代码间跳转,移动光标到相应变量,跳转命令就会将其添加到jumplist中,因此,可以使用CTRL+ O快捷键跳回先前的位置,或者使用CTRL + I快捷键前进到下一个位置。

  • GoToInclude
    查询当前行的头文件,并跳转到相应文件;
    支持文件类型包括:c, cpp, objc, objcpp, cuda
  • GoToDeclaration
    查询光标下的符号并跳转到其声明处;
    支持文件类型包括:c, cpp, objc, objcpp, cuda, cs, go, java, javascript, python, rust, typescript
  • GoToDefinition
    查询光标下的符号并跳转到其定义处;
    支持的文件类型包括:c, cpp, objc, objcpp, cuda, cs, go, java, javascript, python, rust, typescript

注:对于C族语言,该命令只在某些情况下有效,即符号定义在当前上下文内。一个上下文由所编辑的文件和文件内#include所直接或间接包含的文件组成。

  • GoTo
    该命令尝试采取智能的跳转方式,也就意味着,查找光标下的字符,如果可能跳转到它的定义;如果定义无法从当前上下文访问,则跳转到符号的声明。
    支持的文件类型包括:c, cpp, objc, objcpp, cuda, cs, go, java, javascript, python, rust, typescript
  • GoToReferences
    该命令尝试在整个项目内,查找光标下标识符参考,并列出相应的位置列表。
    支持文件类型包括:c, cpp, objc, objcpp, cuda, java, javascript, python, typescript, rust

设置快捷键

为了方便跳转,将上述跳转命令设置为如下快捷键,方便快速跳转。

  • nnoremap <leader>gi :YcmCompleter GoToInclude<CR>
  • nnoremap <leader>gc :YcmCompleter GoToDeclaration<CR>
  • nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
  • nnoremap <leader>gt :YcmCompleter GoTo<CR>
  • nnoremap <leader>gr :YcmCompleter GoToReferences<CR>
    上述配置采用vim的前缀键\去触发相关功能,比如,在Normal模式下输入\gt相当于调用了:YcmCompleter GoTo子命令。

参考

  • Github说明

VIM-代码自动补全插件(YCM)相关推荐

  1. vim 自动补全插件YCM 安装 配置

    vim 自动补全插件YCM 安装 配置 报错 NoExtraConfDetected: No .ycm_extra_conf.py file detected, so no compile flags ...

  2. VSCode代码自动补全 - 插件篇

    VScode 不能自动补全结束标签?自动修改匹配的结束标签? 这里介绍一款vscode插件,只需要输入标签的单词或字母,按enter键,就能直接自动生成开/闭标签,且光标居中. 还有就是快捷方法的使用 ...

  3. vim代码自动补全函数提示设置

    vim中不能代码补全让人感觉很不爽,以下配置就是进行代码补全的,虽然功能没有windows下IDE功能强大,但是也足够用了. 需要插件为:neocomplcache,OmniCppComplete,A ...

  4. vim python补全_转:VIM python 自动补全插件:pydiction

    这是一个相当不错的 Python 代码自动完成的脚本. 可以实现下面python代码的自动补全: 简单python关键词补全 python 函数补全带括号 python 模块补全 python 模块内 ...

  5. Bolt XML和JQBolt Lua代码自动补全插件配置教程

    Bolt没有提供官方IDE,缺少强大的代码提示和自动补全,Notepad++写起界面和脚本来比较费劲. Notepad++有个QuickText插件,支持多语言的自动补全,进行简单的配置就可以支持Bo ...

  6. VScode Vue项目使用html代码自动补全插件

    1.下载插件: HTML Snippets 2.配置settings.json文件 打开文件方式:在VScode中同时按住Ctrl+Shift+P,搜索配置文件 3.在settings.json中添加 ...

  7. vscode自动填充地址插件_制作VSCODE代码自动补全插件

    首先写在前面,我是看了VSCode插件制作:HTML代码自动填充这篇文章后,才基本了解这类vscode插件的编写和配置方法的,所以在文章开头特地声明一下. 首先在本地测试一下补全的信息 第一步,你需要 ...

  8. Blender:下载并安装文本编辑器(Text Editor)代码自动补全插件

    参考网站: [Addon] Auto Completion in Blenders Text Editor Code Autocomplete Manual#Installation [Youtube ...

  9. Pydiction : VIM上的PYTHON代码自动补全插件

    http://www.vim.org/scripts/script.php?script_id=850 1.下载Pydiction 其中有4个文件: complete-dict //PYTHON 的K ...

最新文章

  1. 一款零注解侵入的 API 文档生成工具,你用过吗?
  2. Linux入门和运维
  3. Android内容提供程序
  4. swift如何动态创建对象
  5. python实现微信自动发信息_Python实现智慧-定期向微信女友发送消息,python,智给,定时,发消息...
  6. 当当网头部和尾部——CSS源码
  7. ffmpeg抓取rtsp流并保存_详细解析RTSP框架和数据包分析(1)
  8. 如何快速学会java编程?
  9. matlab重叠图像块拼接,在matlab中拼接图像时如何正确混合?
  10. UML的类图中各箭头的含义
  11. GA遗传算法介绍与实例
  12. python全套视频迅雷下载_[全套视频] 老王Python基础,进阶,项目篇(无KEY完整版) 视频教程 15G...
  13. 极光推送java添加用户_极光推送 java集成
  14. 300以内的蓝牙耳机哪款好?半入耳蓝牙耳机南卡和漫步者测评
  15. 《裁梦为魂》 - 银临 :OI版
  16. WebRTC RTCP XR
  17. 几个p2p开源项目[转] - 文渊阁 - 博客大巴
  18. 燕国胜国际会议英文介绍翻译
  19. sql显示服务器连接不上,sql服务器连接不上
  20. 欢迎同学们参加新乡学院2019年3D打印暑期夏令营

热门文章

  1. 蓝牙耳机哪个音质效果好?音质最好的蓝牙耳机
  2. 魅族16支持html吗,魅族16X手机配置正式公布:骁龙710,支持屏幕指纹
  3. Linux系统中的虚拟化安装部署
  4. win11修改状态栏成透明状态(注册表修改,无需下载软件)
  5. XENIRO 讯琥科技应用案例(六)| 边缘计算和区块链推动智慧农业升级
  6. C# 常用控件及单击事件
  7. Mac中vim的 进入编辑状态、退出编辑状态、强制保存并退出
  8. 二本学渣考研失败,海量算法高频面试题精编解析,这原因我服了
  9. 『飞桨领航团』带你参加国际头部赛事signate柠檬图像分类,7日学会图像分类!...
  10. vue项目设置浏览器icon图标