网站建设会议通知,国家市场监督局官网,电脑网站设计页面,泰州网站建设方案文章目录 前言安装与卸载功能演示gcc/g升级问题 前言
Vim作为当下最受欢迎的文本编译器之一#xff0c;不仅具有强大的文本编辑功能#xff0c;还提供了高度的可定制性。用户可以根据自己的喜好自定义配置#xff0c;并且通过自己编写插件或者使用现有的插件来扩展Vim的功能… 文章目录 前言安装与卸载功能演示gcc/g升级问题 前言
Vim作为当下最受欢迎的文本编译器之一不仅具有强大的文本编辑功能还提供了高度的可定制性。用户可以根据自己的喜好自定义配置并且通过自己编写插件或者使用现有的插件来扩展Vim的功能。
虽说工欲善其事必先利其器然而对于初学者来说花太多的时间在Vim配置上显然会劝退一大批人特别是YCM的插件的配置可以说网络上 90% 的博客都有或多或少的错误。而今天给大家推荐的开源工具 VimForCpp具有以下的优点 使用国内的码云作为代码托管平台安装速度快。在网络畅通的情况下只需要 1~2 min就可以完成全部的安装配置省去了YouCompleteMe漫长的编译过程使用已经预编译好的 ycm_core.so真正做到了一键式安装所有依赖的程序也会自动下载 配置完成后的效果如下图所示整体看起来还是蛮清爽的 阅读完本篇博客你将收获以下的内容
VimForCpp的安装gcc/g升级后的语法识别问题默认情况下VimForCpp只会识别 4.8.5 版本的C头文件VimForCpp的使用技巧
VimForCpp 项目在 2019 就停止维护了写这篇博客的目的就是记录 VimForCpp 使用过程中遇到的问题和对应的解决方案如果你遇到了同样的问题说不定会给你提供帮助
安装与卸载
环境
注意目前 VimForCpp只支持 Centos7 x86_64。如果你的操作系统属于Linux的其他发行版本就不用继续往下看了
安装
VimForCpp 的安装非常简单所有你需要做的便是在shell中执行以下命令
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh bash ./install.sh唯一需要注意的是想让vim配置在那个用户下生效就在哪个用户下执行这个指令。 强烈 “不推荐” 直接在 root 下执行
卸载
官方提到的卸载方式是在安装了 VimForCpp 的用户下执行:
bash ~/.VimForCpp/uninstall.sh但是实际运行后会遇到如下的问题 这是因为 VimForCpp 中使用的 vim 并不是 usr/bin/vim 路径下的vim而是使用本地目录下安装的nvim(vim的一个分支具有更好的性能和可扩展性)使用 which 指令就可以证明。 因此就算你重新安装vim也不会解决问题正确的做法是修改配置文件 .bashrc 的内容取消对 vim 命令的重命名 鉴于此时vim用不了可以使用别的编辑器进行编辑例如 nano。修改后重启终端后 vim 就可以正常使用了
功能演示
VimForCpp功能演示可以参考Gitee这里就一些较为常用的功能进行说明。
VimForCpp集成了很多好用的插件并对其进行了快捷键映射。你需要做的就是在normal模式下按下空格这样就进入了一级功能菜单页面 按下 a~t 就进入了二级菜单。这里面的功能大家可以自行探索。 我最常用的功能就是 fa 查看函数列表。按下 crtl w 就可以移动光标的焦点进入到左边的函数列表了按下换行后进行进行快速跳转 aa可以实现函数/变量跳转也可以实现头文件的跳转 这一部分的功能由 cquery 提供.cquery 文件是其配置文件我这里特意将头文件路径修改为 11使用高版本的头文件原来默认的还是指向 4.8.2 的 %clang
%c -stdgnu11
%cpp -stdgnu14
-pthread# Includes
-I/usr/include
-I/usr/include/c/11
-I.这个功能有个很难受的地方就是你必须要在你的项目根路径下创建一个 .cquery 功能里面就是上面的内容。在 cquery 的 github 的 Issue 中我也看到有人提出这个问题并确实在 cquery 的下一个版本中实现但是我实测发现最新版的 cquery 好像并不是开箱即用的和 LanguageClient-neovim 似乎并不直接兼容。有知道的大神可以指点我一下
gcc/g升级问题
如果gcc 4.8.5就可以满足你所有的需求那么你就不需要阅读这部分的内容了。不知道怎么给Centos7升级gcc的可以参考我这篇博文Centos7下升级gcc/g版本简单 避坑
在升级完gcc/g后我们随便用vim编写一段代码 如果你之前没有使用 yum install gcc-g那么会异常检测出各种各样的错误 如果你之前安装过了那么上面的代码虽然不会出错但是如果用到了高版本的C语法和头文件还是会报错
我们明明已经安装了高版本的 gcc 和 g并且也能正确编译没有任何问题但是为什么 VimForCpp 语法检测会莫名奇妙的出问题这和 VimForCpp 使用语法检查插件 YouCompleteMe 的配置有关虽然 cQuery也有语法检测的功能但是在 VimForCpp 中其语法检测功能被关闭了
ycm的配置文件是 ~/.ycm_extra_conf.py使用vim打开可以看到这样的内容 对于C/C来说YouCompleteMe 使用 clangd 作为语法检查器。clangd 是基于 clang 编译器的语言服务器和任何编译器相同clangd 在解析代码时同样需要一组编译标志compile flags来指导其工作否则就无法正确地解析代码。
而 flags 列表中的参数就是即将提供给 clangd 的编译标志我们重点关注以下参数
-std这个参数指定语法检查所使用的C标准例如 -stdc20-isystem这个参数指定了系统头文件目录我们可以看到默认 VimForCpp 设置的C头文件检索目录是在 4.8.5 这个文件夹下的这也就解释了为什么 VimForCpp 语法检测只会对 g 4.8.5 感冒-I: 用于指定用户头文件目录看的出来开发人员还“夹带私货”了
好的我们现在已经定位问题了只需要将头文件搜索路径修改为高版本的库的路径即可那么如何确保我们头文件添加没有遗漏呢这里教大家一个小技巧前面提到我们编译是没有问题的因此可以使用 g -v 命令来显示 g 编译器详细的编译过程其中就包含了标准库的搜索路径、头文件搜索路径
g -v test.cc在这个部分就可以看到所有的头文件搜索路径最后我修改的结果如下。供大家参考 [-stdc17,-x,c,-isystem,/opt/rh/devtoolset-11/root/usr/include/c/11,-isystem,/opt/rh/devtoolset-11/root/usr/include/c/11/x86_64-redhat-linux,-isystem,/opt/rh/devtoolset-11/root/usr/include/c/11/backward,-isystem,/opt/rh/devtoolset-11/root/usr/lib/gcc/x86_64-redhat-linux/11/include,-isystem,/usr/include,-isystem,/usr/local/include,-I,.,
]重启打开vim后就会生效现在对于高版本的C语法也不再会莫名其妙的报错误了 最后我还想说ycm是一个非常强大的自动补齐插件他也为用户提供了很大的个性化配置对这个有兴趣的可以看看 ycm Github上的介绍。相关设置可以在 ~/.vimrc 文件中配置 文章转载自: http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.ppllj.cn.gov.cn.ppllj.cn http://www.morning.bhbxd.cn.gov.cn.bhbxd.cn http://www.morning.bjsites.com.gov.cn.bjsites.com http://www.morning.lrnfn.cn.gov.cn.lrnfn.cn http://www.morning.zpqk.cn.gov.cn.zpqk.cn http://www.morning.qdxtj.cn.gov.cn.qdxtj.cn http://www.morning.rgrz.cn.gov.cn.rgrz.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn http://www.morning.mtmnk.cn.gov.cn.mtmnk.cn http://www.morning.flxqm.cn.gov.cn.flxqm.cn http://www.morning.bmjfp.cn.gov.cn.bmjfp.cn http://www.morning.wnkqt.cn.gov.cn.wnkqt.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn http://www.morning.mzgq.cn.gov.cn.mzgq.cn http://www.morning.ynwdk.cn.gov.cn.ynwdk.cn http://www.morning.pphbn.cn.gov.cn.pphbn.cn http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn http://www.morning.mrccd.cn.gov.cn.mrccd.cn http://www.morning.hqzmz.cn.gov.cn.hqzmz.cn http://www.morning.ydnx.cn.gov.cn.ydnx.cn http://www.morning.bhdtx.cn.gov.cn.bhdtx.cn http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn http://www.morning.jpkhn.cn.gov.cn.jpkhn.cn http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn http://www.morning.smszt.com.gov.cn.smszt.com http://www.morning.pdmc.cn.gov.cn.pdmc.cn http://www.morning.zbqry.cn.gov.cn.zbqry.cn http://www.morning.drcnn.cn.gov.cn.drcnn.cn http://www.morning.fqpgf.cn.gov.cn.fqpgf.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn http://www.morning.dtfgr.cn.gov.cn.dtfgr.cn http://www.morning.nlqgb.cn.gov.cn.nlqgb.cn http://www.morning.mqss.cn.gov.cn.mqss.cn http://www.morning.mwbqk.cn.gov.cn.mwbqk.cn http://www.morning.qrwjb.cn.gov.cn.qrwjb.cn http://www.morning.wqwbj.cn.gov.cn.wqwbj.cn http://www.morning.nzms.cn.gov.cn.nzms.cn http://www.morning.kzrg.cn.gov.cn.kzrg.cn http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn http://www.morning.ptqpd.cn.gov.cn.ptqpd.cn http://www.morning.prxqd.cn.gov.cn.prxqd.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.mwjwy.cn.gov.cn.mwjwy.cn http://www.morning.sjwiki.com.gov.cn.sjwiki.com http://www.morning.jspnx.cn.gov.cn.jspnx.cn http://www.morning.zmlnp.cn.gov.cn.zmlnp.cn http://www.morning.ghjln.cn.gov.cn.ghjln.cn http://www.morning.frmmp.cn.gov.cn.frmmp.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.xjqhh.cn.gov.cn.xjqhh.cn http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn http://www.morning.cmdfh.cn.gov.cn.cmdfh.cn http://www.morning.lxcwh.cn.gov.cn.lxcwh.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.rdng.cn.gov.cn.rdng.cn http://www.morning.mwrxz.cn.gov.cn.mwrxz.cn http://www.morning.c7623.cn.gov.cn.c7623.cn http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn http://www.morning.hwcln.cn.gov.cn.hwcln.cn http://www.morning.cdlewan.com.gov.cn.cdlewan.com http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.qypjk.cn.gov.cn.qypjk.cn http://www.morning.tpchy.cn.gov.cn.tpchy.cn http://www.morning.qpfmh.cn.gov.cn.qpfmh.cn http://www.morning.nndbz.cn.gov.cn.nndbz.cn http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.lgtcg.cn.gov.cn.lgtcg.cn http://www.morning.mqss.cn.gov.cn.mqss.cn http://www.morning.mgwpy.cn.gov.cn.mgwpy.cn http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn http://www.morning.zwfgh.cn.gov.cn.zwfgh.cn http://www.morning.skksz.cn.gov.cn.skksz.cn http://www.morning.njntp.cn.gov.cn.njntp.cn http://www.morning.xrksf.cn.gov.cn.xrksf.cn http://www.morning.jqrp.cn.gov.cn.jqrp.cn