有没有办法阻止“关键字”在MS Visual Studio中突出显示语法

时间:2009-07-15 16:23:58

标签: c++ visual-c++

MS Visual Studio编辑器将一些非关键字标识符突出显示为关键字 在C ++文件中。特别是“事件”和“数组”被视为关键字。 这对我来说非常烦人,因为它们不是C ++关键字。 我知道如何将自己的关键字添加到语法高亮标识符列表中, 但如何删除现有的内置? 我知道这可能需要修补一些可执行文件。 那么有谁知道如何做到这一点?

3 个答案:

答案 0 :(得分:6)

感谢Steve Guidi提到的文章,我能够找到包含Colorizer和IScanner类的可执行文件。它名为vcpkg.dll,位于/ Microsoft Visual Studio 8 / VC / vcpackages中。 (我使用的是Visual C ++ 2005 Express Edition,其他版本可能会有所不同。)

vcpkg.dll包含以null结尾的UTF-16编码字符串。我用十六进制编辑器打开它,搜索“数组”。文件中只有一个这样的字符串,所以我用“arrry”替换它。 (保持相对于其他关键字的相对字母顺序很重要。)然后我搜索了“事件”,它出现在几个地方,但只有一个不是一些较长字符串的一部分,所以我用“evvvt”替换了这个。启动Visual Studio后,结果发现“数组”和“事件”不再突出显示,但是“arrry”和“evvvt”都是!

当然这是一个丑陋的黑客攻击,它会使你的保修无效, 并且可能违背微软EULA,但这对眼睛有什么好处! 无论如何,如果你想这样做,请小心并记住备份文件。

答案 1 :(得分:2)

看起来似乎没有以用户友好的方式公开禁用语法着色功能。

我能想到有选择地禁用语法着色的唯一方法是为IDE创建一个新的语法着色插件,并列出您想要着色的所有关键字。 Microsoft在this article中提供了有关如何完成此任务的信息。

这种方法的缺点是你的IDE现在有两种C ++语言,我不确定它在加载.h或.cpp文件后如何选择哪个插件可供选择。但是,this article建议您可以通过重写某些注册表项来覆盖现有的C ++插件。

答案 2 :(得分:0)

我认为实现此目的的唯一“半实践”方法是创建Visual Studio package,使用Text Markers来有选择地掩盖您不想要的关键字。即使这不是一个小小的任务。编辑:对于那些不熟悉Visual Studio API及其所有怪癖的人来说,甚至可能不是整周的任务,尤其是没有让它无错误。

换句话说,你可能只想忽略它们。