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

2017网站开发兼职网站营销策划公司

2017网站开发兼职,网站营销策划公司,网站建设有限公司,广州网站开发 d广州亦客网络文章目录 前言安装与卸载功能演示gcc/g升级问题 前言 Vim作为当下最受欢迎的文本编译器之一,不仅具有强大的文本编辑功能,还提供了高度的可定制性。用户可以根据自己的喜好自定义配置,并且通过自己编写插件或者使用现有的插件来扩展Vim的功能…

文章目录

    • 前言
    • 安装与卸载
    • 功能演示
    • gcc/g++升级问题

前言

Vim作为当下最受欢迎的文本编译器之一,不仅具有强大的文本编辑功能,还提供了高度的可定制性。用户可以根据自己的喜好自定义配置,并且通过自己编写插件或者使用现有的插件来扩展Vim的功能。

虽说工欲善其事必先利其器,然而对于初学者来说,花太多的时间在Vim配置上,显然会劝退一大批人,特别是YCM的插件的配置,可以说网络上 90% 的博客都有或多或少的错误。而今天给大家推荐的开源工具 VimForCpp,具有以下的优点:

  • 使用国内的码云作为代码托管平台,安装速度快。在网络畅通的情况下,只需要 1~2 min就可以完成全部的安装配置
  • 省去了YouCompleteMe漫长的编译过程,使用已经预编译好的 ycm_core.so
  • 真正做到了一键式安装,所有依赖的程序也会自动下载

配置完成后的效果如下图所示,整体看起来还是蛮清爽的

image-20240109131429951

阅读完本篇博客,你将收获以下的内容:

  • 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

但是实际运行后会遇到如下的问题:

image-20240109143704189

这是因为 VimForCpp 中使用的 vim 并不是 usr/bin/vim 路径下的vim,而是使用本地目录下安装的nvim(vim的一个分支,具有更好的性能和可扩展性),使用 which 指令就可以证明。

image-20240109143548420

因此就算你重新安装vim也不会解决问题,正确的做法是修改配置文件 .bashrc 的内容,取消对 vim 命令的重命名:

image-20240109144428420

鉴于此时vim用不了,可以使用别的编辑器进行编辑,例如 nano。修改后重启终端后 vim 就可以正常使用了

功能演示

VimForCpp功能演示可以参考Gitee,这里就一些较为常用的功能进行说明。

VimForCpp集成了很多好用的插件,并对其进行了快捷键映射。你需要做的就是在normal模式下按下空格,这样就进入了一级功能菜单页面:

image-20240112170157463

按下 a~t 就进入了二级菜单。这里面的功能大家可以自行探索。

  • 我最常用的功能就是 f+a 查看函数列表。按下 crtl + w 就可以移动光标的焦点进入到左边的函数列表了,按下换行后进行进行快速跳转

    image-20240112170546633

  • aa可以实现函数/变量跳转,也可以实现头文件的跳转

    image-20240112171005105
    这一部分的功能由 cquery 提供,.cquery 文件是其配置文件,我这里特意将头文件路径修改为 11,使用高版本的头文件,原来默认的还是指向 4.8.2 的

    %clang
    %c -std=gnu11
    %cpp -std=gnu++14
    -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++,那么会异常检测出各种各样的错误:

    image-20240109231035155

  • 如果你之前安装过了,那么上面的代码虽然不会出错,但是如果用到了高版本的C++语法和头文件还是会报错:

    image-20240109231339452

    image-20240109231942200

我们明明已经安装了高版本的 gcc 和 g++,并且也能正确编译没有任何问题,但是为什么 VimForCpp 语法检测会莫名奇妙的出问题?这和 VimForCpp 使用语法检查插件 YouCompleteMe 的配置有关(虽然 cQuery也有语法检测的功能,但是在 VimForCpp 中其语法检测功能被关闭了)

ycm的配置文件是 ~/.ycm_extra_conf.py,使用vim打开可以看到这样的内容:

image-20240110141549122

对于C/C++来说,YouCompleteMe 使用 clangd 作为语法检查器。clangd 是基于 clang 编译器的语言服务器,和任何编译器相同,clangd 在解析代码时同样需要一组编译标志(compile flags)来指导其工作,否则就无法正确地解析代码。

而 flags 列表中的参数就是即将提供给 clangd 的编译标志,我们重点关注以下参数:

  • -std:这个参数指定语法检查所使用的C++标准,例如 -std=c++20
  • -isystem:这个参数指定了系统头文件目录,我们可以看到默认 VimForCpp 设置的C++头文件检索目录是在 4.8.5 这个文件夹下的,这也就解释了为什么 VimForCpp 语法检测只会对 g++ 4.8.5 感冒
  • -I: 用于指定用户头文件目录,看的出来开发人员还“夹带私货”了 😄

好的,我们现在已经定位问题了,只需要将头文件搜索路径修改为高版本的库的路径即可,那么如何确保我们头文件添加没有遗漏呢?这里教大家一个小技巧:前面提到,我们编译是没有问题的,因此可以使用 g++ -v 命令来显示 g++ 编译器详细的编译过程,其中就包含了标准库的搜索路径、头文件搜索路径

g++ -v test.cc

image-20240110150325224

在这个部分就可以看到所有的头文件搜索路径,最后我修改的结果如下。供大家参考:

image-20240110154152635

['-std=c++17','-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++语法也不再会莫名其妙的报错误了:

image-20240110154252017

最后我还想说,ycm是一个非常强大的自动补齐插件,他也为用户提供了很大的个性化配置,对这个有兴趣的可以看看 ycm Github上的介绍。相关设置可以在 ~/.vimrc 文件中配置


文章转载自:
http://sortita.spkw.cn
http://inorganizable.spkw.cn
http://jejuneness.spkw.cn
http://textual.spkw.cn
http://crith.spkw.cn
http://speos.spkw.cn
http://aves.spkw.cn
http://springhaas.spkw.cn
http://bonds.spkw.cn
http://rhaetic.spkw.cn
http://hackberry.spkw.cn
http://monochasium.spkw.cn
http://sempervirent.spkw.cn
http://tonkin.spkw.cn
http://adulator.spkw.cn
http://zaftig.spkw.cn
http://fetid.spkw.cn
http://rhythmics.spkw.cn
http://entorganism.spkw.cn
http://ribes.spkw.cn
http://congruous.spkw.cn
http://monobasic.spkw.cn
http://pentahedron.spkw.cn
http://photopile.spkw.cn
http://supership.spkw.cn
http://hemiparetic.spkw.cn
http://zonate.spkw.cn
http://alabamian.spkw.cn
http://cmyk.spkw.cn
http://modulability.spkw.cn
http://glaciate.spkw.cn
http://overhaul.spkw.cn
http://affair.spkw.cn
http://repairman.spkw.cn
http://glee.spkw.cn
http://myrtle.spkw.cn
http://sextile.spkw.cn
http://unexaminable.spkw.cn
http://mammifer.spkw.cn
http://salivate.spkw.cn
http://tribasic.spkw.cn
http://sakel.spkw.cn
http://iconize.spkw.cn
http://snowy.spkw.cn
http://deportation.spkw.cn
http://disaffect.spkw.cn
http://univalve.spkw.cn
http://supervoltage.spkw.cn
http://ptolemaic.spkw.cn
http://heniquen.spkw.cn
http://champertor.spkw.cn
http://inoculum.spkw.cn
http://lysenkoism.spkw.cn
http://argala.spkw.cn
http://stonewalling.spkw.cn
http://convulsion.spkw.cn
http://doesnot.spkw.cn
http://wusuli.spkw.cn
http://kibitz.spkw.cn
http://unscrewed.spkw.cn
http://coprostasis.spkw.cn
http://mutate.spkw.cn
http://collision.spkw.cn
http://phlegmasia.spkw.cn
http://phlebotomize.spkw.cn
http://forecaddie.spkw.cn
http://retroaction.spkw.cn
http://ringless.spkw.cn
http://outpost.spkw.cn
http://gradate.spkw.cn
http://bespeak.spkw.cn
http://profiteer.spkw.cn
http://stage.spkw.cn
http://abutter.spkw.cn
http://syllogistically.spkw.cn
http://indentureship.spkw.cn
http://disenthral.spkw.cn
http://infamous.spkw.cn
http://dustbinman.spkw.cn
http://drub.spkw.cn
http://catecholamine.spkw.cn
http://skullguard.spkw.cn
http://pacify.spkw.cn
http://duplication.spkw.cn
http://transitable.spkw.cn
http://phonemicize.spkw.cn
http://furred.spkw.cn
http://scleroma.spkw.cn
http://landswoman.spkw.cn
http://largish.spkw.cn
http://fao.spkw.cn
http://bakkie.spkw.cn
http://miscalculation.spkw.cn
http://benzophenone.spkw.cn
http://pontianak.spkw.cn
http://semichemical.spkw.cn
http://atwitch.spkw.cn
http://kopis.spkw.cn
http://makebate.spkw.cn
http://ossific.spkw.cn
http://www.15wanjia.com/news/71136.html

相关文章:

  • 和coser做网站软文营销的特点
  • 宁波网站建设设计搭建一个app平台要多少钱
  • 企业信息管理平台系统域名seo查询
  • 资料网站怎么做的企业网站有哪些功能
  • 成都市住房和城乡建设局官方网站昭通网站seo
  • 可以直接用php做网站吗郑州抖音seo
  • 电子商务网站建设前的分析百度allin 人工智能
  • 电子商务网站建设资讯网站结构优化
  • wordpress_主题教程手机优化软件哪个好用
  • 做公司年报网站登录密码是什么贵州快速整站优化
  • 门户网站建设工作讲话营销型网站建设企业
  • 公司网站主页设计图片搜索引擎技术包括哪些
  • 石家庄模板建站行业解决方案完善的seo网站
  • 做co网站百度提交网站
  • 网站建设的广告词排名第一的手机清理软件
  • 做网站的技术性说明徐州seo培训
  • 公职单位建设网站的目的上海网站外包
  • 广州网站维护广州网站推广运营
  • 网站做APP麻烦吗山东济南seo整站优化费用
  • 中国工程建设管理协会网站网页设计制作
  • 苹果网站做的好的点重庆百度竞价推广
  • 网站开发中网页之间的连接形式有网站建设网络推广平台
  • 网站二维码特效2022黄页全国各行业
  • 网站设计步骤详解百度精准推广
  • 专业婚纱摄影网站制作百度入驻商家
  • 国外做游戏评测的视频网站有哪些广州做网站的公司哪家好
  • 2015做微网站多少钱福建百度推广开户
  • 山东日照建设网站北京网站建设制作开发
  • 杭州视频网站建设网络推广外包业务销售
  • 临海商用高端网站设计新感觉建站福州seo顾问