草庐IT

vim-syntax-highlighting

全部标签

vim 从嫌弃到依赖(22)——自动补全

这篇文章我们将讨论vim自带的自动补全功能。当然,针对自动补全功能有许多好用的插件,但是了解vim自带的功能有助于我们更好的用来插件的补全功能。因为我见过有的配置文件将插件的功能配置的比原有的更难用,而且只用基本的功能不一定有原版的好用。所以这里也介绍一下原始版本用法,算是帮助各位在以后的配置中提供一个标杆。make命令在了解自动补全之前,让我们先简单聊聊:make这个命令,它与上一篇文章中介绍的:grep命令类似,也是对shell命令的一个封装。它默认封装的是make命令。我们对c/c++语言执行:make也就是在调用shell中的make命令。它会将编译产生的错误信息存储在quickfix

c++ - 如何在 vim 中将 C 风格的 printf 转换为 C++ 风格的 cout

我移交了一些遗留代码,首先我想看看是否有可能改变类似的东西printf("test%d\n",var);进入std::cout其中有很多,手动完成它们非常耗时。有没有办法使用vim来实现这一点?我得到的最远的是:%s/printf(\(.*\),\(.*\));/std::cout但这只会让我着迷std::cout我可以将clang格式应用于代码,因此在printf中我可以保证逗号后始终有一个空格。在此示例中,空格位于逗号和var之间。理想情况下,此vim命令将能够检测百分号以了解其中有多少变量,还可以检测\n以了解何时将其替换为std::endl。请指教。

c++ - 在 vim 中保留 C++ 注释中的缩进

是否可以将vim和cindent配置为在重新缩进文件(gg=G)时不改变c++注释中的缩进?我在注释中有一些格式化列表与4个空格对齐,但vim将其解释为错误缩进并重新对齐所有内容。例如:/**mylist:*item1*item2*/变成:/**mylist:*item1*item2*/我想要一种告诉vim的方法:“不要触摸注释内容,但缩进其他所有内容。”这很重要,因为我们的项目使用带有Markdown解析器的doxygen来生成文档,并且列表级别使用缩进。 最佳答案 这样写怎么样,这样评论中的缩进独立于评论缩进:/***mylis

c++ - vim - C++ 构造函数初始化列表缩进问题

我正在使用vim7.0。我希望以下代码按以下方式缩进(初始化列表与构造函数缩进相同):A::A():a1(10),a2(10),a3(10){}根据vim帮助,这可以通过设置来完成:setcino+=i0但此设置产生(只有a1正确缩进):A::A():a1(10),a2(10),a3(10){}设置cino+=i1正确缩进a1..a31个空格。 最佳答案 根据documentation和一个小实验,以下内容可能会有所帮助::setcino=i-s似乎完全按照您的意愿缩进了init列表。

如何忽略某些文件以完成vim单词完成?

假设我正在研究非常大的数据文件(每个文件都有大约几个兆字节)。我想通过查看这些数据文件来编写解析代码,因此我在vim中有几个窗口,有些是代码文件,有些是数据文件。在这种情况下,插入模式下的VIM单词完成非常慢,因为它试图扫描数据文件。为了避免这种情况,我想忽略这些具有非程序扩展名的数据文件(例如DAT,TXT而不是C,RB,PY),但请继续观看程序文件。因此,最好的情况是,我可以注册一些在单词完成期间忽略的扩展名。我该如何实现?我看着H:“完整”但是我找不到我想做的。例如,setcomplete-=w在.vimrc不满意我,因为它不仅忽略了数据文件,还忽略了程序文件,这完全破坏了单词的完成。谢

解析控制台输出以使错误消息链接到源代码(类似于VIM中的QuickFix列表)

在vim中,用户可以定义错误形式,并使用它从外部工具(例如GREP,LINT,编译器等)解析消息。在Eclipse中,外部工具的输出显示在控制台中。Eclipse是否提供了类似于VIM的errorformat+QuickFix/位置列表的功能,该功能允许用户简单地解析这些消息并将其转换为某种可单击的列表或解析消息并将引用转换为源代码转换为超链接?在Eclipse中做到这一点的最佳方法是什么?编辑:可以实现此目标而无需编写插件。如果没有,还没有人写这样的通用插件?不知何故,很难想象还没有人提出解决方案。EDIT2:如果在Eclipse中不可能容易,那么是否有一个工具可以观察命令的输出(或一般日志

c++ - 错误 C2143 : syntax error : missing ';' before '__stdcall"

我在创建COMDLL时遇到了一些问题。我的IClassFactory实现如下所示:include#include#include"AddObj.h"#include"AddObjFactory.h"HRESULT__stdcallCAddFactory::CreateInstance(IUnknown*pUnknownOuter,constIID&iid,void**ppv){if(pUnknownOuter){returnCLASS_E_NOAGGREGATION;}CAddObj*pObject=newCAddObj();if(pObject==NULL){returnE_OUTO

c++ - 如何在处理多个文件时组织 Vim 缓冲区、窗口和选项卡

我一生都在使用VIM,但最近我有点厌倦了它,因为在一个大项目(有500kLOC和数百个文件)中同时处理20个左右的文件时,我迷失在缓冲区、窗口和选项卡中.每当我执行:make、:grep等操作时,新的缓冲区就会在当前窗口中跳出。标签也是如此。在某些时候,这开始变得非常困惑,因为我真的必须关注事物在VIM中的位置。有哪些行之有效且简单的方法可以控制这种行为? 最佳答案 使用:hide摆脱所有窗口,除非您真的需要打开它们。我不确定为什么标签会为您创建一个新窗口,CTRL+]应该重新使用当前窗口。nnoremap+4+和nnoremap-

vim 启用鼠标复制粘贴

其实这个是错误的标题,其实是nvim,最近在使用parrot的vim时,发现右键粘贴文本的时候,左下显示--(insert)VISUAL--,并且无法粘贴内容一般网上会教你用setmouse-=a,当然这个没有问题,但是持久化的时候,网上通常是说修改~/.vimrc正常这个没问题,但是我发现修改了不生效,然后vim--version的时候发现┌─[root@parrot]─[~]└──╼#vim--versionNVIMv0.4.4Buildtype:ReleaseLuaJIT2.1.0-beta3Compilation:/usr/bin/cc-g-O2-fdebug-prefix-map=/

c++ - 在 Vim 中为 C++ 类创建 getter 和 setter 成员

我正在创建一个包含许多double(或其他类型,类型无关紧要)成员的类。classCalcParameters{public:CalcParameters(){}~CalcParameters(){}//gettersandsettershereprivate:double_param1;double_param2;...};是否可以在Vim中编写一个脚本来为每个参数自动生成公共(public)getter和setter?喜欢doubleparam1()const{return_param1;}voidsetParam1(doubleparam1){_param1=param1;}..