13|YouCompleteMe:Vim 里的自动完成
该思维导图由 AI 生成,仅供参考
YouCompleteMe
功能简介
- 深入了解
- 翻译
- 解释
- 总结
Vim用户必备的YouCompleteMe(YCM)插件为Vim提供了快速、即输即查、模糊搜索的代码完成引擎,支持多种编程语言,并提供了多个基于不同语言的完成引擎。YCM的安装配置相对复杂,但功能强大,使用模糊匹配和智能提示,尤其在C++编程中展现出了出色的效果。全局配置和使用方法也得到了详细介绍,包括自动修正、跳转功能和重命名的重构等。另外,RTags是一个客户端/服务器端架构的程序,提供了一些特别的功能,适用于C族语言编程者。文章还提到了RTags的安装、运行和项目配置方法,以及使用示例。总的来说,本文介绍了YCM和RTags两款工具,为Vim用户提供了丰富的代码完成和代码导航功能,使其成为一款值得使用的工具。
《Vim 实用技巧必知必会》,新⼈⾸单¥59
全部留言(16)
- 最新
- 精选
- doge说一下用后感吧,跳转的速度和精度上比vscode和clion要迅速很多,就是快捷键比较多,得多用熟能生巧才行。 另一个就是得ctags+cscope+YCM+rtags一起用才能得到最好的跳转体验。 基本就是C-] \gt \rj \rT轮番上阵,哈哈! 整体感觉还是非常良好的,不过如果CLion没那么卡和吃内存就好了,CLion的类继承关系这一块的体验很好,不知道vim这一块有没有类似的操作,另外CLion的调试也很适合小白使用。但Clion经常用着用着就卡死了,尴尬。 当然如果vim实在玩不转,vscode和CLion还是可以作为替代的,哈哈。 最后一点就是高亮配色方案的事,老师好像比较喜欢朴素的色调,但我看多色调习惯了,最后用了octol/vim-cpp-enhanced-highlight这个插件,但感觉还是挺一般的。不知道有没有大神有啥推荐的配置。
作者回复: 无论如何,cscope没有使用的必要了吧,如果你用C++的话。如果用上编译数据库的话,YCM基本已经满足需求了。ctags和rtags勉强有部分补缺的作用,cscope我看不出来有啥用处。 类继承你是说查看有什么子类吗?这个在rtags里有,但如果要跟商业软件比界面的漂亮,那肯定是没戏的。 我试了你说的这个插件,还有点意思。但是,跟其他类似插件一样,单纯依赖名字的加亮,在C++里玩不转——把我的很普通的成员变量next都当成标准库里的函数名称来加亮了。 朴素点,不是为了朴素,而只是不愿看到错误行为时的无奈之举。如果有插件能进行完全正确的加亮,又不会拖慢编辑的速度,我干吗不用呢?;-)
2020-09-032 - chris请问老师,我想给ycm的GoToSymbol命令也定义一个快捷键,但发现这个命令不是默认取当前光标下的符号,而是要自己输入带查找的symbol,这样的快捷键应该如何定义?
作者回复: 这个命令本来就是设计用来输入符号的,如果是取光标下的符号,用 GoToDefinition 子命令不挺好? 如果是不想手工输入前面这串,可以类似这样定义: :nnoremap <Leader>gs :YcmCompleter GoToSymbol 这样,敲入 \gs 即可自动输入命令的前面部分。
2020-11-071 - 凉人。/usr/bin/ld: /home/work/.vim/my/start/YouCompleteMe/third_party/ycmd/third_party/regex-build/3/temp.linux-x86_64-3.6/regex_3/_regex.o(.text+0x112c): unresolvable H��@�>H��FH��H��H��@�~�F�H��@�~H��8�H��H��0�FH��H��(�FH��H�� �FH��H���FH��H���FH��H��F�fD relocation against symbol `_Py_NoneStruct' 安装过程一直失败。看起来是mrab-regex有bug,这个可以跳过吗
作者回复: 把环境搞干净了(没有自己的特殊环境变量)再试试。这种有问题就要到网站上去问问了。 如果是Linux发布版,一般可能已经自带了。虽然可能版本偏老,应该肯定能装上。
2022-12-22归属地:江苏 - 谁家内存泄露了请问老师,我安装了ycm,采用的是在ubuntu上直接用apt安装的方式; 在c++的工程中添加了对应的json文件; 现在的现象是函数/符号能够跳转了,但是无法查找相关的引用即没有这个命令:YcmCompleter GoToReferences,这个问题您有什么思路吗?
作者回复: 我用过 Ubuntu 20.04,上面直接带的 YCM 版本比较老,是不支持这个功能的。自己安装新版本(需要自己运行 install.py 来安装 clangd)就可以。
2022-09-21归属地:上海2 - Qfeng公司内网无法访问网络,只能通过外网电脑下载好后拷贝的方式传输文件进入。这种情况下试过,无法安装YCM,它会在安装的时候访问github,请问老师这种问题可以如何绕过?
作者回复: 拿同样环境的机器安装,然后把整个 .vim 目录复制过去。
2022-09-18归属地:上海 - 軟件賺硬幣老师好,我是Linux初学者。我的Ubuntu20.04下面运行了 sudo apt install vim-youcompleteme, vim-addon-manager install youcompleteme两行代码之后,然后用vim打开新文件,还是用不了ycm。显示NoExtraConfDetected: No .ycm_extra_conf.py file detected, so no compile flags are available…(后面字体看不到了,笔记本屏幕限制)
作者回复: 请再仔细看看配置部分,我特地讲到了 .ycm_extra_conf.py 文件,及我为解决这个问题准备的 adah1972/ycmconf 插件。
2021-05-29 - supakito老师,感觉最近tabnine好像很火的样子,不知道和ycm相比,哪个更好用一些?
作者回复: 没有比较。这个补全的方法不同,比较耗算力,而且对大项目是需要付费的,我没有尝试。 对于这类工具我持审慎怀疑:如果它真能预测得很好,那是不是说明代码中的重复有点多了? 不过,那只是个人没有使用过的瞎猜测。实践是检验真理的标准。你自己试试不就得了?适合自己的就是好的,适合你的不一定适合其他人,反过来也一样。
2020-11-082 - 浩浩brew list. 安装了一下软件 ============================= autoconf cmake fzf gettext icu4c lua node pkg-config python@3.9 ruby universal-ctags automake cscope gdbm go libyaml macvim openssl@1.1 python@3.8 readline sqlite xz ycm 只加 clangd 选项以下报错 【我需要自己安装 clangd 吗,请问?】 ======================= Downloading Clangd from https://dl.bintray.com/ycm-core/clangd/clangd-10.0.0-x86_64-apple-darwin.tar.bz2... ERROR: downloaded Clangd archive does not match checksum.
作者回复: 可能就是下载/网络出了问题。我目前试下来是可以成功的,clangd的URL跟你的完全相同。
2020-10-25 - gigglesunYouCompleteMe可以通过离线的方式安装吗? 公司的服务器不能连接外网,我可以在自己的电脑通过 git clone --recurse-submodules \ --shallow-submodules \ https://github.com/ycm-core/YouCompleteMe.git 装好后,把这个YouCompleteMe文件夹拷贝到公司服务器,然后我再额外的安装对应的语言引擎这样安装吗?
作者回复: 在同样软件配置的机器上,使用git命令和安装命令,完全结束了(建议测试一下)再拷贝结果。 安装过程中也会下载东西的,所以不能在目标机上执行安装命令。
2020-10-18 - 瀚海星尘老师我这里 ubuntu 使用 apt install vim-youcompleteme 后,提示找不到引擎,估计是还需要单独安装,最后还是用了编译安装的方式。我也安装了 vim-autopairs,确实带来了很多困扰,最头痛的就是需要只输入一对的第一个符号的情况,每次输入都会自动输出两个,然后删除第二个又会自动把第一个给删除...看了老师的留言,果断把它删除了。������
作者回复: 如果报的错是跟clang相关的话,可能是vim-youcompleteme没有正确地依赖到libclang1上。我在Ubuntu 20.04 LTS上碰到过,运行sudo apt install libclang1可以解决该问题。
2020-10-113